0

以下のような結果セットがあります。誰でもこれを「ピボット」する方法を教えてもらえますか?

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
4

2 に答える 2