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

SQL Server行列转换求助:将统计结果从列转成行

嘿,这事儿好办!要把你当前的横向统计结果转成纵向的键值对格式,在SQL Server里有两种常用方法,我都给你列出来:

方法1:用UNION ALL拆分统计

这种写法直观易懂,分别对每个指标做统计后合并结果:

SELECT 'Categories' AS [#Object#], COUNT(DISTINCT Category) AS [#Count#] FROM Associate
UNION ALL
SELECT 'Orders' AS [#Object#], COUNT(DISTINCT [Order Number]) AS [#Count#] FROM Associate
UNION ALL
SELECT 'Products' AS [#Object#], COUNT(DISTINCT Product) AS [#Count#] FROM Associate

方法2:用CROSS APPLY + VALUES(更高效)

如果你的Associate表数据量比较大,推荐用这种方法——它只需要扫描一次表完成所有统计,再把列转成行,性能更好:

SELECT obj.[#Object#], obj.[#Count#]
FROM (
    -- 先一次性算出所有统计值
    SELECT 
        COUNT(DISTINCT Category) AS Categories,
        COUNT(DISTINCT [Order Number]) AS Orders,
        COUNT(DISTINCT Product) AS Products
    FROM Associate
) AS src
-- 把横向的列转换成纵向的行
CROSS APPLY (
    VALUES
        ('Categories', src.Categories),
        ('Orders', src.Orders),
        ('Products', src.Products)
) AS obj([#Object#], [#Count#])

两种方法都能输出你想要的格式:

#Object##Count#
Categories17
Orders13050
Products37

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:28:22