将 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 行标题转置到第一列的主要内容,如果未能解决你的问题,请参考以下文章