You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server中编写PIVOT表实现数据透视查询?

SQL Server 使用PIVOT实现状态统计透视表

直接上可以实现需求的SQL语句:

SELECT 
    Owner,
    ISNULL(Required, 0) AS Required,
    ISNULL(Pending, 0) AS Pending,
    ISNULL(Complete, 0) AS Complete
FROM (
    -- 提取需要的基础数据,只保留Owner和State列
    SELECT Owner, State
    FROM Testing
) AS SourceData
PIVOT (
    -- 用COUNT统计每个Owner-State组合的记录数
    COUNT(State)
    -- 指定把State字段的三个值转成结果集中的列
    FOR State IN (Required, Pending, Complete)
) AS PivotTable
ORDER BY Owner;

关键部分解释:

  • 子查询SourceData:给PIVOT提供干净的数据源,只包含需要分组和转置的字段,避免无关列干扰结果。
  • PIVOT子句:
    • COUNT(State):每一行对应一个State记录,用COUNT能直接统计出每个Owner对应某个State的记录数量。
    • FOR State IN (Required, Pending, Complete):明确要把State字段的这三个枚举值转换成结果表的列名。
  • ISNULL函数:PIVOT对不存在的Owner-State组合会返回NULL,用ISNULL把这些NULL替换成0,完全匹配需求中的显示格式。

如果后续State的可能值会动态新增,可以用动态SQL自动生成列列表,但针对当前固定的三个状态,上面的静态语句足够满足需求。

内容的提问来源于stack exchange,提问作者slashbrackets

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 15:05:25