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

如何将多语句计数查询转换为单行列数透视表?

实现单行四列的状态统计结果

方法一:使用CASE表达式(通用所有数据库)

这种方式兼容性最强,几乎所有SQL数据库都支持,通过条件判断统计各状态的记录数:

SELECT
    COUNT(*) AS Total,
    COUNT(CASE WHEN [Status] = 1 THEN 1 END) AS New,
    COUNT(CASE WHEN [Status] = 2 THEN 1 END) AS Active,
    COUNT(CASE WHEN [Status] = 3 THEN 1 END) AS Closed
FROM @results;

原理:COUNT()函数会自动忽略NULL值,当Status不匹配时CASE返回NULL,不会被计入统计,刚好符合需求。

方法二:使用PIVOT运算符(适用于SQL Server等支持的数据库)

如果是SQL Server环境,用PIVOT语法更简洁:

SELECT
    (SELECT COUNT(*) FROM @results) AS Total,
    [1] AS New,
    [2] AS Active,
    [3] AS Closed
FROM (
    SELECT [Status] FROM @results
) AS SourceTable
PIVOT (
    COUNT([Status])
    FOR [Status] IN ([1], [2], [3])
) AS PivotTable;

也可以在子查询里先计算总记录数,再一起透视:

SELECT
    Total,
    [1] AS New,
    [2] AS Active,
    [3] AS Closed
FROM (
    SELECT
        [Status],
        COUNT(*) OVER () AS Total
    FROM @results
) AS SourceTable
PIVOT (
    COUNT([Status])
    FOR [Status] IN ([1], [2], [3])
) AS PivotTable;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:58:10