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

求SSMS 2019中实现指定值Count行转列的SQL查询语句

在SSMS 2019中实现行转列的SQL查询方案

针对你需要将多行分组数据转换为单行展示的需求,这里提供两种在SQL Server(SSMS 2019适用)中可行的实现方法:

方法一:使用CASE WHEN + GROUP BY

这是通用的行转列方案,兼容性强,逻辑清晰:

SELECT 
    [Key],
    MAX(CASE WHEN Value = 2 THEN [Count] ELSE 0 END) AS NormalValue,
    MAX(CASE WHEN Value = 4 THEN [Count] ELSE 0 END) AS SpecialValue
FROM YourTableName
WHERE Value IN (2, 4) -- 仅筛选目标Value,优化查询效率
GROUP BY [Key]

逻辑说明:

  • 通过CASE WHEN分别匹配Value=2和Value=4的记录,提取对应的Count值;
  • 利用MAX()聚合函数(因每个Key+Value组合唯一,用SUM()结果一致)将同一Key的多行数据合并为单行;
  • 若某个Key缺失对应Value的记录,会返回0,避免空值。

方法二:使用PIVOT函数

SQL Server内置的行转列语法,代码更简洁:

SELECT 
    [Key],
    ISNULL([2], 0) AS NormalValue, -- 用ISNULL将空值替换为0
    ISNULL([4], 0) AS SpecialValue
FROM (
    SELECT [Key], Value, [Count]
    FROM YourTableName
    WHERE Value IN (2, 4)
) AS SourceTable
PIVOT (
    MAX([Count]) -- 指定聚合逻辑
    FOR Value IN ([2], [4]) -- 定义要转换为列的Value值
) AS PivotTable

逻辑说明:

  • 子查询先筛选出需要处理的Value记录;
  • PIVOT子句将Value字段的指定值(2、4)转换为列名,并用MAX([Count])填充对应列的数值;
  • 用ISNULL()将缺失记录对应的空值替换为0,保持结果格式统一。

注意:请将上述代码中的YourTableName替换为你实际使用的表名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:25:05