【发布时间】:2017-09-30 14:47:19
【问题描述】:
我知道这可能很基本,但我认为在这里会更快。
+----------+----------+---------+
| PersonID | No Shows | Cancels |
+----------+----------+---------+
| 1 | 2 | 0 |
| 1 | 5 | 1 |
| 1 | 0 | 0 |
| 2 | 0 | 0 |
| 2 | 0 | 0 |
| 3 | 1 | 0 |
| 3 | 0 | 0 |
| 4 | 1 | 1 |
| 4 | 3 | 2 |
| 4 | 0 | 0 |
+----------+----------+---------+
我正在尝试消除将 NoShows 和 Cancels 组合为 0 的人。例如:PersonID=2
尝试:
SELECT
PersonID
,SUM(NoShows) AS TotalNS
,SUM(Cancels) AS TotalCanc
FROM Table1
GROUP BY PersonID
HAVING SUM(NoShows) > 0 AND SUM(Cancels) > 0
这显然行不通,因为如果 NoShows 或 Cancels 为 0,它将开始删除人员。例如:PersonID=3
期望的输出:
+--------------+----------+---------+
| PersonID | No Shows | Cancels |
+--------------+----------+---------+
| 1 | 7 | 1 |
| 3 | 1 | 0 |
| 4 | 4 | 3 |
+--------------+----------+---------+
【问题讨论】:
-
OR 而不是 AND?
-
@ZLK 我想我已经度过了漫长的一天。
-
@G.Arima Person 3 将被删除,因为他们的 cancels=0。但我想要它们,因为 NoShows !=0
-
是的,我想,这就是为什么在几秒钟内发布正确答案的原因
标签: sql sql-server sql-server-2012 group-by having