SQL Server多列表資料透視方法
在多種情況下,將表轉換為其轉置形式都非常有用。本文重點在於如何在Microsoft SQL Server中轉置具有多個欄位(A、B等)的資料表。
使用UNPIVOT和PIVOT進行資料透視
要轉置表,您可以結合使用UNPIVOT和PIVOT函數:
範例如下:
<code class="language-sql">select * from ( select day, col, value from yourtable unpivot ( value for col in (A, B) ) unpiv ) src pivot ( max(value) for day in (Mon, Tue, Wed, Thu, Fri) ) piv;</code>
針對SQL Server 2008以上版本的CROSS APPLY和VALUES方法
對於SQL Server 2008以上版本,您也可以使用CROSS APPLY與VALUES組合來解開資料:
<code class="language-sql">select * from ( select day, col, value from yourtable cross apply ( values ('A', ACalls),('B', BCalls) ) c (col, value) ) src pivot ( max(value) for day in (Mon, Tue, Wed, Thu, Fri) ) piv;</code>
應用於您的查詢
如果您想轉置目前查詢的結果,可以使用類似的方法:
<code class="language-sql">select * from ( select LEFT(datename(dw,datetime),3) as DateWeek, col, value from DataTable cross apply ( values ('A', ACalls), ('B', BCalls) ) c (col, value) ) src pivot ( sum(value) for dateweek in (Mon, Tue, Wed, Thu, Fri) ) piv;</code>
這會將ACalls和BCalls列轉置為行,並為每週的每一天(Mon、Tue等)建立列標題。
以上是如何在 SQL Server 中轉置具有多列的表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!