Union

martedì 06 aprile 2010 - 19.02

iif Profilo | Expert

Ciao, ho 4 select con i medesimi campi

Esiste un comando che me li riepiloghi in un'unica query e li ordini?
Dovrei salvarla come una query nel database.

Grazie.

lbenaglia Profilo | Guru

>Ciao, ho 4 select con i medesimi campi
>
>Esiste un comando che me li riepiloghi in un'unica query e li
>ordini?
>Dovrei salvarla come una query nel database.
Che DBMS usi?

Se con "riepiloghi" intendi combinare le query di SELECT in un unico result set la risposta è si utilizzando appunto l'operatore UNION.
Questa è la documentazione per SQL Server:
http://msdn.microsoft.com/it-it/library/ms180026.aspx

Puoi salvare permanentemente la query nel database definendo una vista:
http://msdn.microsoft.com/it-it/library/ms187956.aspx

>Grazie.
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

iif Profilo | Expert

Ciao, uso SQL Server 2008
la query è questa:
SELECT 'Fino a 03 Kg.' AS Limite, COUNT(IDOrdine) AS Quanti, MONTH(creazione) as Mese, left(Creazione,4) AS Anno
FROM TB_ORDINI WHERE (Stato <> 'A')
AND (Stato <> 'T')
AND (CAST(ISNULL(REPLACE(peso, ',', '.'), 0) AS decimal(7, 3)) <= 3)
GROUP BY left(Creazione,4), MONTH(creazione)
UNION

SELECT 'Fino a 07 Kg.' AS Limite, COUNT(IDOrdine) AS Quanti, MONTH(creazione) as Mese, left(Creazione,4) AS Anno
FROM TB_ORDINI WHERE (Stato <> 'A')
AND (Stato <> 'T')
AND (CAST(ISNULL(REPLACE(peso, ',', '.'), 0) AS decimal(7, 3)) >3)
AND (CAST(ISNULL(REPLACE(peso, ',', '.'), 0) AS decimal(7, 3)) <= 7)
GROUP BY left(Creazione,4), MONTH(creazione)
UNION

SELECT 'Fino a 15 Kg.' AS Limite, COUNT(IDOrdine) AS Quanti, MONTH(creazione) as Mese, left(Creazione,4) AS Anno
FROM TB_ORDINI
WHERE (Stato <> 'A')
AND (Stato <> 'T')
AND (CAST(ISNULL(REPLACE(peso, ',', '.'), 0) AS decimal(7, 3)) > 7)
AND (CAST(ISNULL(REPLACE(peso, ',', '.'), 0) AS decimal(7, 3)) <= 15)
GROUP BY left(Creazione,4), MONTH(creazione)
UNION

SELECT 'Fino a 35 Kg.' AS Limite, COUNT(IDOrdine) AS Quanti, MONTH(creazione) as Mese, left(Creazione,4) AS Anno
FROM dbo.TB_ORDINI
WHERE (Stato <> 'A')
AND (Stato <> 'T')
AND (CAST(ISNULL(REPLACE(peso, ',', '.'), 0) AS decimal(7, 3)) > 15)
GROUP BY left(Creazione,4), MONTH(creazione)

Vorrei ordinarla per Anno, mese, Limite
Salvarla come query.

lbenaglia Profilo | Guru

>Ciao, uso SQL Server 2008
>la query è questa:
<SNIP>
>Vorrei ordinarla per Anno, mese, Limite
>Salvarla come query.

CREATE VIEW <schema>.<nome> AS SELECT... ... ORDER BY Anno, Mese, Limite;

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

iif Profilo | Expert

La mia query la inserisco tra SELECT e ORDER?

lbenaglia Profilo | Guru

>La mia query la inserisco tra SELECT e ORDER?
Si.
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5