Operatore PIVOT

giovedì 13 dicembre 2007 - 10.07

allforum Profilo | Junior Member

Ragazzi, mi servirebbe un aiutino perchè proprio non mi riesce (sì, lo sò, sono una frana)

Ho la seguente tabella (SQL Server 2005):

-- creo e popolo la tabella set nocount on create table TB ( pv char(2), tipo char(2), c1 char(1) ) insert into TB values ('AG','OV','A') insert into TB values ('AG','OV','A') insert into TB values ('AG','OV','B') insert into TB values ('AG','OV','C') insert into TB values ('AG','OV','C') insert into TB values ('AG','OV','C') insert into TB values ('AG','CP','A') insert into TB values ('AG','CP','B') insert into TB values ('AG','CP','B') insert into TB values ('AG','CP','B') insert into TB values ('AG','CP','C') insert into TB values ('AG','CP','C') insert into TB values ('AG','CP','C') insert into TB values ('RM','OV','B') insert into TB values ('RM','OV','B') insert into TB values ('RM','OV','C') insert into TB values ('RM','OV','C') insert into TB values ('RM','CP','A') insert into TB values ('RM','CP','A') insert into TB values ('RM','CP','B') insert into TB values ('RM','CP','C') set nocount off

Tenendo conto che sò esattamente quale può essere il contenuto di "c1"
(in questo caso A, B, C), il risultato che vorrei ottenere è questo:

pv tipo A B C -- ---- -- -- -- AG OV 2 1 3 AG CP 1 3 3 RM OV 0 2 2 RM CP 2 1 1

Stò cercando di utilizzare PIVOT ma non mi riesce.
Mi aiutate per favore ?

lbenaglia Profilo | Guru

>Stò cercando di utilizzare PIVOT ma non mi riesce.
>Mi aiutate per favore ?

Osserva la seguente query:

SELECT pv, tipo, A, B, C FROM ( SELECT pv, tipo, c1 FROM dbo.TB ) AS SourceTable PIVOT ( COUNT(c1) FOR c1 IN ([A], [B], [C]) ) AS PivotTable; /* Output: pv tipo A B C ---- ---- ----------- ----------- ----------- AG CP 1 3 3 RM CP 2 1 1 AG OV 2 1 3 RM OV 0 2 2 (4 row(s) affected) */

Per maggiori dettagli:
http://msdn2.microsoft.com/en-us/library/ms177410.aspx

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

alx_81 Profilo | Guru

>Ragazzi, mi servirebbe un aiutino perchè proprio non mi riesce
>(sì, lo sò, sono una frana)
>
>Ho la seguente tabella (SQL Server 2005):
>
>Stò cercando di utilizzare PIVOT ma non mi riesce.
>Mi aiutate per favore ?
Ho fatto una prova, il risultato sembra quello che ti serve :

SELECT pv , tipo , [A] , [B] , [C] FROM (SELECT pv, tipo, c1 FROM dbo.TB) AS SourceTable PIVOT ( COUNT(c1) FOR c1 IN ([A],[B],[C]) ) AS PivotTable

Comunque mi sono basato sulla reference di MSDN a questo link http://msdn2.microsoft.com/en-us/library/ms177410.aspx
ciao!


Alx81 =)

http://blogs.dotnethell.it/suxstellino

allforum Profilo | Junior Member

... come si dice: la classe non è acqua !

GRAZIE !

alx_81 Profilo | Guru

>... come si dice: la classe non è acqua !
chiedo scusa per l'intromissione..
avevo il "Rispondi" aperto e Lorenzo mi ha bruciato sul tempo ad inserire..
ciao!
>
>GRAZIE !
di nulla!

Alx81 =)

http://blogs.dotnethell.it/suxstellino

lbenaglia Profilo | Guru

>chiedo scusa per l'intromissione..
>avevo il "Rispondi" aperto e Lorenzo mi ha bruciato sul tempo
>ad inserire..
No, no, hai copiato spudoratamente il mio esempio

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

allforum Profilo | Junior Member

L'avevo capito, infatti ho accettato le risposte di entrambi.

Ciao.
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