当列值重复时隐藏行
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
您可以将 DISTINCT
与 NOT 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
我有一个名为“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
您可以将 DISTINCT
与 NOT 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