以下のような結果セットがあります。誰でもこれを「ピボット」する方法を教えてもらえますか?
datadate , timestart , timeend , datatype , datacount , datasum
2013-06-03 , 20:00:00.0000000 , 21:00:00.0000000 , 10 , 3 , 30
2013-06-03 , 20:00:00.0000000 , 21:00:00.0000000 , 20 , 3 , 30
2013-06-03 , 20:00:00.0000000 , 21:00:00.0000000 , 30 , 3 , 30
2013-06-03 , 19:00:00.0000000 , 20:00:00.0000000 , 10 , 2 , 20
これに変わることができます
date , timestart timeend , type10count , type10sum , type20count , type20sum , type30count , type30sum
2013-06-03 , 20:00:00.0000000 , 21:00:00.0000000 , 3 , 30 , 3 , 30 , 3 , 30
2013-06-03 , 19:00:00.0000000 , 20:00:00.0000000 , 2 , 20 , 0 , 0 , 0 , 0
CASEステートメントを避けて新しいテーブルを再定義するためにPIVOTを作成しようとしていましたが、不足しています。これはどのように行うべきですか?
declare @starttable table
(
datadate date , timestart time , timeend time , datatype tinyint , datacount int , datasum int
)
insert into @starttable
select '2013-06-03' , '20:00:00' , '21:00:00' , 10 , 3 , 30
union all
select '2013-06-03' , '20:00:00' , '21:00:00' , 20 , 3 , 30
union all
select '2013-06-03' , '20:00:00' , '21:00:00' , 30 , 3 , 30
union all
select '2013-06-03' , '19:00:00' , '20:00:00' , 10 , 2 , 20
select datadate , timestart , timeend
from ( select datadate , timestart , timeend , datacount ,datasum from @starttable ) as t1
pivot ( sum(datasum) for datatype in (datacount,datasum) ) as t2
-- yes i know sql server gongs this