我有一个包含如下数据的表格:
USER NAME Timestamp EXECUTED CLOSED
1 user1 JOHN DOE 2015-11-23 12:50:45 Yes Yes
2 user1 JOHN DOE 2015-11-23 12:52:35 Yes Yes
3 user1 JOHN DOE 2015-11-23 12:53:52 Yes Yes
4 user1 JOHN DOE 2015-11-23 12:54:59 Yes Yes
5 user1 JOHN DOE 2015-11-23 12:56:04 Yes Yes
6 user1 JOHN DOE 2015-11-23 18:09:37 Yes No
7 user1 JOHN DOE 2015-11-23 18:15:46 Yes Yes
8 user1 JOHN DOE 2015-11-23 18:17:02 Yes Yes
我想准备一份这样的报告:
USER NAME EXECUTED CLOSED NOTCLOSED
user1 JOHN DOE 8 7 1
我尝试过这样的事情:
SELECT USER, NAME, Timestamp, count(EXECUTED), count(CLOSED)
FROM table
WHERE Timestamp LIKE "2015-11-23%"
AND EXECUTED = "Yes"
AND CLOSED = "Yes"
但本例的结果表明:
EXECUTED CLOSED
8 8
当我有 1 条记录且已关闭 = 否时。 我知道,当我计算 EXECUTED 和 CLOSED 列时,我无法使用 WHERE = YES/NO 正确评估,因为数据类型更改为整数,但我找不到正确的解决方案。
其他事情:我如何向“NO CLOSE”列显示正确的值? (EXECUTED 和 CLOSED 之间的区别)
最佳答案
select user, name,
sum(case when executed = 'Yes' then 1 else 0 end) as executed,
sum(case when closed = 'Yes' then 1 else 0 end) as closed,
sum(case when executed = 'Yes' and closed = 'No' then 1 else 0 end) as notclosed
from user
group by user, name
关于sql - 对 sql 语句中带有 yes 且 not 的值进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34030432/