sql - 计算 SQL 表中的填充列数
问题描述
我有一个包含 6 列的 SQL 表。1 个 ID int 列和 5 个日期时间列 Round1、Round2、...、Round5
数据看起来像这样。要么有日期,要么单元格为空。
我希望查询显示填充的日期时间列的数量。那是
您能否就如何构建此查询提供一些提示?这会涉及聚合函数吗?
谢谢
解决方案
考虑:
SELECT ID, IIf(Round1 Is Null, 0, 1) + IIf(Round2 Is Null, 0, 1) +
IIf(Round 3 Is Null, 0, 1) + IIf(Round4 Is Null, 0, 1) + IIf(Round5 Is Null, 0, 1) AS Cnt
FROM Table;
除非您首先使用 UNION 查询规范化数据,否则聚合函数没有帮助。
SELECT ID, Round1 AS Dte, "R1" AS Src FROM table
UNION SELECT ID, Round2, "R2" FROM table
UNION SELECT ID, Round3, "R3" FROM table
UNION SELECT ID, Round4, "R4" FROM table
UNION SELECT ID, Round5, "R5" FROM table;
然后在聚合 SQL 中使用该查询。
SELECT ID, Count(Dte) AS CntD FROM Q1 GROUP BY ID;
推荐阅读
- ubuntu-16.04 - 如何让 NUC 上的 HDMI-CEC 内部适配器工作
- node.js - 在 API 无法访问后,您可以通过哪些不同方式从 SoundCloud 获取元数据?
- docker - C:/Program Files/Docker Toolbox/docker.exe: invalid reference format
- laravel-7 - Laravel application and PHPUnit using sqlite, after executing the test database tables are dropped
- mysql - MySQL中两个日期之间的查询,按天数分组
- c - 在 C 中用 int 值更改字符串值
- javascript - execute a code after every 1/24 sec not working
- ios - IOS消息贴有声音
- python - 使用数据框中的列为 seaborn 图的背景着色
- ios - 在 iOS Swift 中对自定义对象进行排序