过滤掉 HAVING 子句中的字段组合

Filter out combination of fields in HAVING clause

我知道这可能很基础,但我认为在这里会快得多。

    +----------+----------+---------+
    | 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”和“Cancelles”的总计组合为 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 或 Cancells 中的任何一个为 0,它将开始删除人员。例如:PersonID=3

期望的输出:

+--------------+----------+---------+
|     PersonID | No Shows | Cancels |
+--------------+----------+---------+
|            1 |        7 |       1 |
|            3 |        1 |       0 |
|            4 |        4 |       3 |
+--------------+----------+---------+

试试这个,如果您遇到任何困难,请告诉我。

SELECT
    PersonID
    ,SUM(NoShows) AS TotalNS
    ,SUM(Cancels) AS TotalCanc

FROM Table1
GROUP BY PersonID
HAVING SUM(NoShows) > 0 or SUM(Cancels) > 0

您的问题是:

I'm trying to obtain only those which have combination of both Total of NoShows and Cancels as 0. Eg: PersonID=2

答案是:

SELECT PersonID
FROM Table1
GROUP BY PersonID
HAVING SUM(NoShows) = 0 AND SUM(Cancels) = 0;

我不清楚为什么你会接受不同逻辑的答案。