sql - 将 SQL 行标题转置到第一列
问题描述
转置以下查询结果的最短、最快、最简单的方法是什么?我希望 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
当前结果:
解决方案
使用聚合:
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);
推荐阅读
- java - 谷歌地图中的方向
- javascript - 如何在Angular的侧边栏菜单上禁用单击
- python - 获取 TypeError: 来自 PyErr_NewException 的元类冲突
- docker - Docker 使用“nogroup”的用户“nobody”运行映射卷
- ios - 为什么 swift 编译器不能使用我的下标?
- java - 使用 Java SDK v2 从 dynamodb 扫描地图列表
- powershell - 将每个 csv 项目转换为字符串并将它们添加到犀鸟简单列表中
- reactjs - 反应:无法渲染组件
- javascript - 我怎么称呼选择事件?选择事件在 jquery 中不起作用
- reactjs - 上传块以使用 React 表达时,appendFileSync 未生成完整文件