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中文网其他相关文章!