[ql server 2005] Tabelle a campi incroiciati

martedì 14 febbraio 2012 - 17.57

mazinga76 Profilo | Newbie

Ciao a tutti,
sto impazzendo per realizzare una tabella a campi incrociatisu sql server 2005.
Ho una tabella di partenza che e' la seguente:


379x264 39Kb




la mia necessita' e di ottenere la seguente tabella a campi incrociati:

662x106 17Kb


considerate che le date sono variabili e vanno da un minimo di 1 ad max di 3 e che anche l'elenco dei venditori e' variabile.

In access viene fatta cosi':

TRANSFORM Sum(vendite.[NumVendite]) AS SumOfNumVendite
SELECT vendite.[Venditore], vendite.[Prodotto], Sum(vendite.[NumVendite]) AS [Total Of NumVendite], Sum([NumVendite])-1 AS [Total Of NumVendite-1]
FROM vendite
GROUP BY vendite.[Venditore], vendite.[Prodotto]
PIVOT vendite.[Data];

ed in sql???
grazie e spero che qualcuno riesca ad aiutarmi

lbenaglia Profilo | Guru

>ed in sql???

Ciao,

SQL Server offre i comandi PIVOT e UNPIVOT ma a differenza della TRANSFORM di Access non permettono di scrivere query cross tab dinamiche.
L'assurdità è che nemmeno l'imminente SQL Server 2012 sarà in grado di farlo!

Puoi aggirare l'ostacolo ricorrendo al Dynamic SQL, ma a mio parere è solo un workaround (e se non presti attenzione rischi di subire attacchi di SQL Injection).
A titolo di esempio leggi questo post:
http://sqlblogcasts.com/blogs/madhivanan/archive/2008/08/27/dynamic-pivot-in-sql-server-2005.aspx

>grazie e spero che qualcuno riesca ad aiutarmi
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5