2010-10-07 118 views
1

我想用下面的字段SQL Server的數據透視表幫助

Date 
BreakfastMeetings 
BreakfastCovers 
LunchSandwichMeetings 
LunchSandwichCovers 
LunchCookedMeetings 
LunchCookedCovers 

難道我就在想這是可以使用數據透視表進行轉以下的ResultSet

Meetings Covers Date   TypeName 
1   3  2010-10-14 Breakfast 
1   1  2010-10-14 LunchCooked 
2   4  2010-10-15 Breakfast 
1   3  2010-10-18 Breakfast 
1   3  2010-10-19 Breakfast 
1   1  2010-10-19 LunchSandwich 
1   3  2010-10-20 Breakfast 
1   3  2010-10-21 Breakfast 
1   3  2010-10-22 Breakfast 

進入的格式?任何指針都會很好,否則我將最終採取某種形式的臨時表路由來將數據轉換爲這種格式。

謝謝

回答

1

這是一種方法。它實際上需要和unpivot和一個樞軸操作。 unpivot將會議和封面組合成一個列,並將TypeName值更改爲所需的列名。

數據透視使用unpivot的結果來提供最終格式。

SELECT TheDate, BreakfastMeetings, BreakfastCovers, LunchSandwichMeetings, 
    LunchSandwichCovers, LunchCookedMeetings, LunchCookedCovers 
FROM (
    -- unpivot to put counts in single column and create new type names 
    SELECT TheDate, TypeName + MeetingCover AS TypeName, RowCounts 
    FROM (SELECT TheDate, TypeName, Meetings, Covers 
     FROM MyTable 
     ) AS p 
     UNPIVOT (RowCounts FOR MeetingCover IN (Meetings, Covers) 
     ) AS UnpivotTable 
    ) AS Source 
    -- pivot the unpivoted data to create new columns 
    PIVOT (MAX(RowCounts) FOR TypeName IN (BreakfastMeetings, BreakfastCovers, 
              LunchSandwichMeetings, 
              LunchSandwichCovers, 
              LunchCookedMeetings, 
              LunchCookedCovers) 
) AS PivotTable 
ORDER BY TheDate 
+0

正是我需要的感謝。真的希望我可以讓我的腦袋繞過整個Pivot的東西,但是有一些東西我很難抓住 – Gavin 2010-10-08 08:58:08