Abfrage mit PIVOT

10/06/2010 - 18:13 von GG | Report spam
Hallo NG,

ich steh' hier leider auf 'm Schlauch, kann die Abfrage nicht
umstellen, dass es wie gewünscht die Daten liefert... :-\

Was ich habe:
/* TuristaIP Agentur-Aktionen (BR, B, O, OR, BW) nach Jahr|Monat
*/
SELECT Year([Datum]) AS Jahr
, Month([Datum]) AS Monat
, [Veranstalter]
, COUNT(*) AS [AnzAktionen]
FROM [dbo].[ip_AktionsHistory_view]
WHERE [AktionCode] IN ( 'BR', 'B', 'O', 'OR', 'BW' )
GROUP BY Year([Datum])
, Month([Datum])
, [Veranstalter]
ORDER BY Year([Datum])
, Month([Datum])
, [Veranstalter]
, [AnzAktionen] DESC
GO

und damit...

Jahr Monat Veranstalter AnzAktionen
2009 12 ZGT 148
2010 1 ZGT 206
2010 2 UBB 40
2010 2 ZGT 139
2010 3 UBB 163
2010 3 WVS 75
2010 3 ZGT 73
2010 4 IDTO 38
2010 4 UBB 219
2010 4 WVS 103
2010 4 ZGT 151
2010 5 IDTO 71
2010 5 UBB 513
2010 5 WVS 52
2010 5 ZGT 172
2010 6 IDTO 19
2010 6 SAXO 1
2010 6 UBB 264
2010 6 WVS 4
2010 6 ZGT 47

(20 row(s) affected)

Was ich aber gerne hàtte:
Datum ZGT UBB usw.
12/2009 148 0 ...
1/2010 206 40 ...
2/2010 139 ... ...
3/2010 ... ... ...
4/2010 ... ... ...
5/2010 ... ... ...
6/2010 ... ... ...

(7 row(s) affected)

Ich habe jetzt nicht alle Spalten/Werte abgetippt :-)

Kann mir bitte jemand kurz die Lösung verraten?
Danke.

Ciao:
GG ;-)
 

Lesen sie die antworten

#1 Christoph Muthmann
11/06/2010 - 13:26 | Warnen spam
GG wrote:
Hallo NG,

ich steh' hier leider auf 'm Schlauch, kann die Abfrage nicht
umstellen, dass es wie gewünscht die Daten liefert... :-\
[snip]



Hallo GG,
ein Realname ist hier gern gesehen.
Ich hatte im Forum bereits diese Lösung gepostet:

Du kannst es über die PIVOT-Syntax auswerten. Nachteil die Spalten müssen
bekannt sein, oder Du verwendest dynamisches SQL.

create table #ip_AktionsHistory_view(Datum date, Veranstalter char(3));

insert into #ip_AktionsHistory_view(Datum, Veranstalter) values ('20100101',
'ZGT');
insert into #ip_AktionsHistory_view(Datum, Veranstalter) values ('20100101',
'ZGT');
insert into #ip_AktionsHistory_view(Datum, Veranstalter) values ('20100201',
'ZGT');
insert into #ip_AktionsHistory_view(Datum, Veranstalter) values ('20100301',
'ZGT');
insert into #ip_AktionsHistory_view(Datum, Veranstalter) values ('20100101',
'UBB');
insert into #ip_AktionsHistory_view(Datum, Veranstalter) values ('20100101',
'UBB');
insert into #ip_AktionsHistory_view(Datum, Veranstalter) values ('20100201',
'WVS');
insert into #ip_AktionsHistory_view(Datum, Veranstalter) values ('20100301',
'WVS');


select Substring(CONVERT(varchar(10),datum, 103),4,7), Veranstalter
from #ip_AktionsHistory_view
order by Veranstalter, Datum

select a.Datum, a.[ZGT], a.[UBB], a.[WVS]
from
(select *
from (Select Substring(CONVERT(varchar(10),datum, 103),4,7)as Datum,
Veranstalter
from #ip_AktionsHistory_view) b
PIVOT (count(Veranstalter) FOR Veranstalter IN ( [ZGT],[UBB],[WVS] )) as x)
a

go
drop table #ip_AktionsHistory_view


Einen schönen Tag noch,
Christoph
Microsoft SQL Server MVP
http://www.insidesql.org

Ähnliche fragen