SQL 表格轉置:UNPIVOT 與 PIVOT 函數的應用
在 SQL 中轉置表格,可以使用 UNPIVOT 和 PIVOT 函數組合實作。 UNPIVOT 函數將列轉換為行,而 PIVOT 函數將行轉換為列。
UNPIVOT 資料
UNPIVOT 函數用於將多列轉換為單列。在範例中,需要將 A 和 B 列進行展開。以下查詢示範了此過程:
<code class="language-sql">select day, col, value from yourtable unpivot ( value for col in (A, B) ) unpiv;</code>
此查詢將建立一個包含三列的新表:day、col 和 value。 col 列將包含列名(A 或 B),value 列將包含來自展開列的對應值。
PIVOT 數據
PIVOT 函數用於將行轉換為列。在本例中,需要將 day 值(Mon、Tue、Wed、Thu、Fri)轉換為欄位:
<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>
最終查詢將產生期望的輸出:
<code>Value | Mon | Tue | Wed | Thu | Fri -------|-----|-----|-----|-----|----- A | 1 | 3 | 5 | 7 | 9 B | 2 | 4 | 6 | 8 | 0</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>
此查詢將把您的 DataTable 表中的資料轉置為所需的格式。
以上是如何使用 UNPIVOT 和 PIVOT 在 SQL 中轉置表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!