Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Select Top 2 Sum

  1. #1
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258

    Select Top 2 Sum

    codice:
    SELECT SUM(PrezzoUnitarioRow) AS somma FROM RiepilogoCostiROWS WHERE IdRiferimento='2'
    La somma di tutti i campi PrezzoUnitarioRow dove IdRiferimento=2 mi restituisce 20, ed è esatto

    ma se volessi prencere solo i primi 2 valori?

    ho provato a fare una top 2 ma il risultato restituito è sempre 20 (ho provato anche direttamente in access)

    Com'è possibile che tutte e 3 le query mi diano lo stesso identico valore?

    codice:
    
    
    SELECT TOP 2 Sum(RiepilogoCostiRows.PrezzoUnitarioRow) AS somma FROM RiepilogoCostiRows WHERE (((RiepilogoCostiRows.IdRiferimento)='2'))
    
    SELECT TOP 2 SUM(PrezzoUnitarioRow) AS somma FROM RiepilogoCostiROWS WHERE IdRiferimento='2'

  2. #2
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,802
    visto che chiedi la somma di una colonna... (che è un valore unico), vorresti top 2 di cosa?

    mi sa che ti serve inserire un'altra query o cambiare il tipo di richiesta
    prova a spiegare cosa vuoi ottenere

  3. #3
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    PrezzoUnitarioRow | IdRiferimento

    10 | 1

    4 | 2

    16 | 2

    14 | 2

    10 | 1
    vorrei che la select sommi solo i primi 2 valori dove idriferimento sia 2...in pratica 4+16


  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,802
    non ti ho chiesto che db usi, per access l'ho risolata così:
    codice:
    select sum(valore) as somma from (select top 2 * from tabella WHERE IdRiferimento='2' )

  5. #5
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    Quote Originariamente inviata da Vincent.Zeno Visualizza il messaggio
    non ti ho chiesto che db usi, per access l'ho risolata così:
    codice:
    select sum(valore) as somma from (select top 2 * from tabella WHERE IdRiferimento='2' )

    Funziona perfettamente, grazie 1000.

  6. #6
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    Approfitto:

    visto che se uno dei campi contiene una lettera e non un numero la select ovviamente mi restituisce un errore avevo pensato di effettuare un controllo:

    se tutti i records contengono solo numero allora esegui la select altrimenti non eseguirla.

    Sarà stata la giornata pesante ma non riesco a capire come fare per mettere al vaglio tutti i records nella colonna PrezzoUnitarioRow con idRiferimento=2

    Ho abbozzato un:
    codice:
    If IsNumeric(variabile)
    SQL="SELECT...
    else
    .....
    Ultima modifica di Luca1317; 02-11-2013 a 20:06

  7. #7
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,802
    seleziona i valori (select top 2 bla bla quel che ti interessa)
    li validi entrambi
    se sono buoni esegui, altrimenti puppa

  8. #8
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,802
    dipende un po' anche dal contesto...

    di quanti record parliamo?
    potresti selezionarli tutti, eseguire in ciclo, e valorizzare un consenso

  9. #9
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    In realtà il 2 di top 2 è una variabile che cambia a seconda di alcune cose ma questo non è un problema; il problema è che non riesco a capire come fare il controllo; ti spiego:

    codice:
    '----------INIZIO --- PRIMA DELLA SOMMA INIZIO IL CONTROLLO PER VEDERE SE I RECORDS SONO SOLO NUMERI ALTRIMENTI, SE SONO PRESENTI LETTERE O ALTRO LA SOMMA RESTITUISCE UN ERRORE---------------------------------- 
    Dim SQLROWcontrollo,recROWcontrollo
    SQLROWcontrollo = "SELECT TOP 2 * FROM RiepilogoCostiROWS WHERE IdRiferimento='"&cod&"'"
    Set RecROWcontrollo = Server.CreateObject ("ADODB.Recordset")
    RecROWcontrollo.Open SQLROWcontrollo, Conn, 3, 3
    
    
    While (NOT RecROWcontrollo.EOF)
    
    
    PrezzoUnitarioRowcontrollo=RecROWcontrollo("PrezzoUnitarioRow")
    
    
    
    
    RecROWcontrollo.MoveNext
    WEnd
    
    
    RecROWcontrollo.close
    Set RecROWcontrollo = nothing
    
    
    '----------FINE --- PRIMA DELLA SOMMA INIZIO IL CONTROLLO PER VEDERE SE I RECORDS SONO SOLO NUMERI ALTRIMENTI, SE SONO PRESENTI LETTERE O ALTRO LA SOMMA RESTITUISCE UN ERRORE----------------------------------
    dove dovrei inserire il codice seguente? non posso farlo nel ciclo altrimenti mi farebbe la select sum per ogni ciclo.

    codice:
    IfIsNumeric(variabile)
    SQL="SELECT...
    else
    .....

  10. #10
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,802
    proverei con una cosa del genere:
    codice:
    Dim SQLROWcontrollo,recROWcontrollo
    SQLROWcontrollo = "SELECT TOP 2 * FROM RiepilogoCostiROWS WHERE IdRiferimento='"&cod&"'"
    Set RecROWcontrollo = Server.CreateObject ("ADODB.Recordset")
    RecROWcontrollo.Open SQLROWcontrollo, Conn, 3, 3
    
    consenso = 0
    While (NOT RecROWcontrollo.EOF)
    
    PrezzoUnitarioRowcontrollo=RecROWcontrollo("PrezzoUnitarioRow")
    if not IsNumeric(PrezzoUnitarioRowcontrollo) then consenso = consenso + 1
    
    
    RecROWcontrollo.MoveNext
    WEnd
    
    
    RecROWcontrollo.close
    Set RecROWcontrollo = nothing
    
    if consenso = 0 then
    procedi
    else
    fai_altro
    end if
    l'ho detta ma non provata

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.