当列值重复时隐藏行

Hide rows when column values are duplicate

我有一个名为“letters”的 table,其中两列如下所示:

case_nr | date
--------+-----------------------
1       | 2015-06-13 12:45:04
1       | NULL
2       | 2015-06-11 12:45:09
3       | 2015-06-12 17:41:49
3       | 2015-06-13 18:42:99

case_nr 1 人打印了 2 封信,但只发送了一封

我想过滤所有已发送信件(有日期)的所有情况

所以在这种情况下结果应该是:

2
3

case_nr 分组,只取那些没有 date is null 记录的

select case_nr
from your_table
group by case_nr
having sum(case when date is null then 1 else 0 end) = 0

SQLFiddle demo

您可以将 DISTINCTNOT IN 一起使用:

SELECT DISTINCT case_nr
FROM TableName
WHERE case_nr NOT IN 
          (SELECT case_nr FROM TableName WHERE [date] IS NULL )

结果:

case_nr
--------
2
3

示例结果 SQL Fiddle

替代方案:

SELECT 
    case_nr
FROM (
    SELECT
        case_nr,
        COUNT(CASE WHEN [date] IS NULL THEN 1 END) AS cnt
    FROM 
        yourTable
    GROUP BY
        case_nr
    ) t
WHERE
    cnt = 0