Вывод PIVOT в хранимой процедуре в SQL Server 2008

Возможный дубликат:динамический sql pivot в sql-сервере

Как изменить эту хранимую процедуру для вывода PIVOT

SELECT COUNT(Rly) AS TheCount, Rly FROM SPAD 

WHERE Rly IN ('CR', 'ER', 'ECR', 'ECoR', 'NR', 'NCR', 'SR', 'SCR', 'SER', 'SECR', 'WR', 'WCR', 'Kolkata') 


GROUP BY Rly
1 ответ

Это ПРИНИМАЕТ, что у вас есть конечное число значений rlys; Единственный другой способ достичь этого - использовать DYNAMIC SQL, если есть больше значений. (Поиск ссылки)

Select
sum(case when rly = 'CR' then 1 else 0 end) as "CR",
sum(case when rly = 'ER' then 1 else 0 end) as "ER",
sum(case when rly = 'ECR' then 1 else 0 end) as "ECR",
sum(case when rly = 'ECoR' then 1 else 0 end) as "ECoR",
sum(case when rly = 'NR' then 1 else 0 end) as "NR",
sum(case when rly = 'NCR' then 1 else 0 end) as "NCR",
sum(case when rly = 'SR' then 1 else 0 end) as "SR",
sum(case when rly = 'SCR' then 1 else 0 end) as "SCR",
sum(case when rly = 'SER' then 1 else 0 end) as "SER",
sum(case when rly = 'SECR' then 1 else 0 end) as "SECR",
sum(case when rly = 'WR' then 1 else 0 end) as "WR",
sum(case when rly = 'WCR' then 1 else 0 end) as "WCR",
sum(case when rly = 'Kolkata' then 1 else 0 end) as "Kolkata"
FROM SPAD

EDITED После принятия для перехода от счета к сумме.

licensed under cc by-sa 3.0 with attribution.