Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131

    [SQL SERVER 2005] Selezione Distinct con varie funzione SUM()

    Ciao a tutti, premetto che conosco le query basilari, cmq il preoblema è questo: nella mia tabella devo fare una SELECT DISTINCT per ottenere una lista di ordini e fin qui tutto funziona, quando inserisco le funzioni SUM(Importo) as Importo la query mi spezzetta il risultato. Esiste una query che mi restituisca il tutto?

  2. #2
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    E' possibile avere la struttura delle tabelle in gioco e come son collegate ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    questa è la tabella:

    codice:
    CREATE TABLE [dbo].[Ordini](
    	[Id] [numeric](10, 0) IDENTITY(1,1) NOT NULL,
    	[NumOrd] [numeric](10, 0) NULL,
    	[DatOrd] [datetime] NULL,
    	[Articolo] [char](15) COLLATE Latin1_General_CI_AS NULL,
    	[DescrArt] [char](35) COLLATE Latin1_General_CI_AS NULL,
    	[Qta] [numeric](5, 0) NULL,
    	[Importo] [numeric](15, 2) NULL,
    	[Utente] [char](30) COLLATE Latin1_General_CI_AS NULL,	
    	[Colli] [numeric](5, 0) NULL,
    	[FlgAgg] [char](1) COLLATE Latin1_General_CI_AS NULL,	
    	[SavOrd] [char](1) COLLATE Latin1_General_CI_AS NULL,
    	[ImpOrd] [char](1) COLLATE Latin1_General_CI_AS NULL,
    	[EvaOrd] [char](1) COLLATE Latin1_General_CI_AS NULL,
    	[Ordine] [char](15) COLLATE Latin1_General_CI_AS NULL,
    	[TipEva] [char](1) COLLATE Latin1_General_CI_AS NULL
    ) ON [PRIMARY]

  4. #4
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    se fai select NumOrd , Sum (importo) .... group by NumOrd ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    Niente, praticamente questa query dovrebbe restituirmi il dettaglio dell'ordine che viene fatto...

    prima usavo questa:

    codice:
    SELECT DISTINCT NumOrd,CONVERT(VARCHAR,Datord,103) as DatOrd,Ordine,SUM(importo) AS Importo,SUM(QTA) AS Qta,SUM(Colli) AS Colli
    FROM ordini 
    WHERE Utente='sps'  AND FlgAgg='S' AND SavOrd='N'
    GROUP BY numord,ordine,Datord,TipEva 
    ORDER BY NumOrd desc

  6. #6
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    Nulla cioe' ?

    Non capisco perche' devi usare la distinct. Raggruppando gia' per num ordine (che suppongo sia il codice singolo dell'ordine per cui tu devi avere i totali di articoli e altre info aggregate) qual'e' il campo che ti crea rottura ? il campo "ordine" invece che rappresenta ?

    Tra l'altro gruppi per TipEva ma non lo estrai tra i campi in select.

    codice:
    SELECT DISTINCT NumOrd,SUM(importo) AS Importo,SUM(QTA) AS Qta,SUM(Colli) AS Colli
    FROM ordini 
    WHERE Utente='sps'  AND FlgAgg='S' AND SavOrd='N'
    GROUP BY numord
    Questa semplificata ti estrae , a meno dei campi descrittivi che ho tolto, quello che volevi ?

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    La tua funziona alla meraviglia penso che il campo che crea problemi sia DatOrd io lo estraggo cosi
    codice:
    CONVERT(VARCHAR,Datord,103) as DatOrd
    perchè mi serve solo la data e non l'ora. Con questo campo come posso fare faccio?

  8. #8
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    Adesso son in carenza di zuccherri e ho poche idee

    codice:
    SELECT DISTINCT NumOrd,CONVERT(VARCHAR,Datord,103) as DatOrd,SUM(importo) AS Importo,SUM(QTA) AS Qta,SUM(Colli) AS Colli
    FROM ordini 
    WHERE Utente='sps'  AND FlgAgg='S' AND SavOrd='N'
    GROUP BY numord, CONVERT(VARCHAR,Datord,103)
    Cosi' non funziona vero ?

    Non ricordo bene il SQL Server e potrei aver detto na sciocchezza

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    Per fortuna che sei in calo di zucheri è azzeccata perfetta, spiegami dove avevo sbagliato o indicami un tutorial su ciò. Ti ringrazi na cifra!

  10. #10
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    Non so cosa rappresenti il campo "ordine". Cioe' il codice dell'ordine ce l'hai gia' in NUmOrd, per cui quel campo mi pare sia ridondante e l'ho tolto.

    Come ho scritto poi tu gruppavi pure per TipEva ma a che pro? Ti serviva una spaccatura all'interno dell'ordine per questo flag? Tieni conto che ogni campo che aggiungi nella group by ti crea una spaccatura in piu' nel raggruppamento.

    Da ultimo, ma su questo non ci metto mano sul fuoco, i campi di group by devon essere esattamente quelli che poi tu esponi nella select.

    Cioe' il processo mentale e' : trasformo la data in solo data ora. Gruppo per questo campo cosi' convertito e poi lo seleziono nella clausola di select

    codice:
    Select ... CONVERT(VARCHAR,Datord,103) As DataOrd
    ...
    Group by  CONVERT(VARCHAR,Datord,103)

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.