データを行から列にピボットするには、いくつかの方法があります。
CASE
式で集計関数を使用できます。
select
sum(case when Particluar='Excise Duty 12 %' then amount else 0 end) [Excise Duty 12 %],
sum(case when Particluar='Edu CESS 2%' then amount else 0 end) [Edu CESS 2%],
sum(case when Particluar='HR Edu CESS 1%' then amount else 0 end) [HR Edu CESS 1%],
sum(case when Particluar='Sale CST 2%' then amount else 0 end) Sale CST 2%]
from yourtable;
SQL Server 2005 以降では、PIVOT関数を使用してデータを列に変換できます。
select *
from
(
select Particluar, Amount
from yourtable
) d
pivot
(
sum(amount)
for Particluar in ([Excise Duty 12 %], [Edu CESS 2%],
[HR Edu CESS 1%], [Sale CST 2%])
) piv;
値の数が不明な場合は、Particluar
動的 SQL を使用して結果を取得できます。
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Particluar)
from yourtable
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT ' + @cols + '
from
(
select Particluar, Amount
from yourtable
) x
pivot
(
sum(Amount)
for Particluar in (' + @cols + ')
) p '
execute(@query)