Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [sql server] select per confrontare tabelle e sommare colonne

    Ciao a tutti, sono alle basi di sql e mi sto approcciando con alcune query su database.
    Ho una database con svariati ordini cliente e due tabelle �testata� e �dettaglio�.
    voglio sommare gli importi di tutte le righe di ogni singolo ordine (campo totriga) e tirare fuori l�elenco degli ordini (campo nrordine) nei quali l�importo totale delle righe non corrisponde al totale documento in testata (tottesta).
    esempio: l�ordine nr 5 ha 3 righe di merce e sommandole il totale fa 30�. Il totale in testata ha per� il valore 25. Questa testata dovrebbe tirarla fuori.

    ipotizzavo una query di questo tipo ma non so come impostare una condizione �where� che estragga solo le testate dove l�importo differisce dalle righe:

    select testata.nrordine dettaglio.*
    From testata Inner join dettaglio
    On testata.id=dettaglio.idtestata
    where sum (testata.tottesta) <> sum (dettaglio.totriga)

    ma non funziona. Mi pare di capire che il sum non possa funzionare nella condizione where. Se ho fatto confusione chiedo scusa, ditelo e cercher� di essere pi� chiaro.
    grazie mille

  2. #2
    prepara prima la query che ti estrae i dati da confrontare. una volta pronta affrontiamo il discorso della selezione

  3. #3
    select testata.nrordine testata.tottesta dettaglio.totriga
    From testata Inner join dettaglio
    On testata.id=dettaglio.idtestata

  4. #4
    dove sono le somme? puoi per piacere fare un esempio?

  5. #5
    Devo sommare i totriga di ogni ordine e verificare se corrisponde al tottesta dello stesso ordine.

    Esempio:

    Ordine nr.1234

    QTà 1 pallone rosso 5,00€
    QTà 4 pallone verde 6,00

    totale ordine 20,00€

    ——

    la query deve sommare le righe quindi 5+6 e confrontare se il totale torna..in questo caso è 20 quindi non torna e deve mostrarmi il numero ordine. Questa operazione da ripetere per tutti gli ordini del database

  6. #6
    sai almeno come ottenere il totale delle righe per un dato ordine? (nel tuo esempio, 11 Euro)

  7. #7
    Quote Originariamente inviata da optime Visualizza il messaggio
    sai almeno come ottenere il totale delle righe per un dato ordine? (nel tuo esempio, 11 Euro)
    Credo così:

    select testata.nrordine, sum(testata.tottesta), sum(dettaglio.totriga)
    From testata Inner join dettaglio
    On testata.id=dettaglio.idtestata

    ignorantemente aggiungevo a questa query (senza sum nella prima riga)la condizione:
    where
    sum(testata.tottesta) <> Sum (dettaglio.totriga)

    e ricevo errore:

    è possibile specificare un’aggregazione in Una clausola where solo se è inclusa in una sottoquery di una clausola having o in un elenco di selezione e la colonna da aggregare è un riferimento esterno
    Ultima modifica di littlesaint; 14-03-2019 a 14:35

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 © 2024 vBulletin Solutions, Inc. All rights reserved.