将 SQL 行标题转置到第一列

Posted

技术标签:

【中文标题】将 SQL 行标题转置到第一列【英文标题】:Transpose SQL row headers to first column 【发布时间】:2018-11-13 21:50:32 【问题描述】:

转置以下查询结果的最短、最快、最简单的方法是什么?我希望 0-3 和 3-6 显示在第一列中。对不起,但如果我不伸出援手,这是会让我困惑好几天的事情之一。提前致谢。

SELECT SUM (CASE WHEN CMAPR BETWEEN 0 AND 3 THEN 1 ELSE 0 END) AS [0-3],
       SUM (CASE WHEN CMAPR BETWEEN 3.01 AND 6 THEN 1 ELSE 0 END) AS [3-6]
FROM TBL

当前结果:

【问题讨论】:

用您正在使用的数据库标记您的问题。 【参考方案1】:

使用聚合:

SELECT (CASE WHEN CMAPR >= 0 AND CMAPR <=3 THEN '0-3'
             WHEN CMAPR <= 6 THEN '3-6'
             ELSE 'Other'
        END) AS grp, COUNT(*)
FROM tbl
GROUP BY (CASE WHEN CMAPR >= 0 AND CMAPR <=3 THEN '0-3'
               WHEN CMAPR <= 6 THEN '3-6'
               ELSE 'Other'
          END);

唯一的缺点是如果没有行,这将不会返回组。

您可以通过以下方式简单地取消您的查询:

SELECT v.*
FROM (SELECT SUM (CASE WHEN CMAPR BETWEEN 0 AND 3 THEN 1 ELSE 0 END) AS [0-3],
             SUM (CASE WHEN CMAPR BETWEEN 3.01 AND 6 THEN 1 ELSE 0 END) AS [3-6]
      FROM TBL
     ) x CROSS APPLY
     (VALUES ('[0-3]', [0-3]), ('[3-6]', [3-6])) v(which, val);

【讨论】:

哇,我也要去看看那个。

以上是关于将 SQL 行标题转置到第一列的主要内容,如果未能解决你的问题,请参考以下文章

SQL 将多行转置到不同的列

在 SQL 中将行转置为列标题

如何从列转置到行?

SQL Server 转置(可能是转置?)多行到一列

使用 serde Rust 将数据从记录转置到没有中间结构的列

sql server如何将字段添加到第一列