sql - 查找具有重复列但由具有指定值的一列不同的行
问题描述
我有这个数据:
ID PERSNR YEARNR MONTHNR DAYNR ABSTIME ABSID ABSCALC TypeLine
---------------------------------------------------------------------
1 26 2018 12 3 480 3 11 0
2 26 2018 12 3 480 3 11 1
5 26 2018 10 1 60 1 31 0
8 26 2018 10 3 60 1 31 0
13 69 2018 12 3 480 3 11 0
14 69 2018 12 3 480 3 11 1
19 69 2018 9 3 60 3 31 1
22 69 2018 9 3 60 3 31 0
23 69 2018 9 3 420 21 11 0
26 69 2018 9 6 120 21 31 1
29 69 2018 9 10 120 21 31 1
32 69 2018 9 4 480 21 11 1
我需要确定以下情况:
TypeLine 为 0 和 1 结果 ID 的行:1 和 2;13 和 14、19 和 22
只有 TypeLine 的行只有 0 结果 ID:5;8个;23
只有 TypeLine 的行只有 1 个结果 ID:26、29、32
我不确定要创建这 3 个脚本,也找不到解决方案。
请你帮助我好吗?
解决方案
这是做你想做的吗?
select (case when cnt_type_0 > 0 and cnt_type_1 > 0
then 'Condition 1'
when cnt_type_1 = 0
then 'Condition 2'
when cnt_type_0 = 0
then 'Condition 3'
end) as condition,
t.*
from (select t.*,
count(*) over (partition by ID, PERSNR, YEARNR, MONTHNR, DAYNR, ABSTIME, ABSID, ABSCALC) as cnt,
sum(case when TypeLine = 0 then 1 else 0 end) over (partition by ID, PERSNR, YEARNR, MONTHNR, DAYNR, ABSTIME, ABSID, ABSCALC) as cnt_type_0,
sum(case when TypeLine = 1 then 1 else 0 end) over (partition by ID, PERSNR, YEARNR, MONTHNR, DAYNR, ABSTIME, ABSID, ABSCALC) as cnt_type_1
from t
) t
where cnt >= 2;
您可以将条件添加到WHERE
子句中以获取仅一种类型的行。
推荐阅读
- batch-file - 如何:获取批处理脚本以记录多个 robocopy
- xml - 使用 XSL 提取 XML 表的一部分
- swift4 - CoreAudio 调用 AudioObjectGetPropertyDataSize 返回错误的大小
- javascript - P5 以 60 FPS 反应
- c# - 在 C# 中,如果花费太长时间,如何将进程的输出作为字符串同时终止进程?
- r - 如何在 macOS 中使用 Cairo 和 XQuartz 支持编译 R?
- python - Django Forbidden 403 错误“CSRF 令牌丢失或不正确”在尝试登录时已登录
- database - 将复杂数据存储为 NoSQL 数据库中的键?
- python - MongoDB插入难题
- r - 计算元音的问题,检查以单词中的元音开头或结尾