我有一个具有以下结构的表:归档名称ID C_Time Groups SYSTEM Group1
我想显示在C2Time> = 1/15/2020之后在level1中创建(Group1)状态为level 2中CLOSE(组)的情况。
因此,在上述情况下(作为链接附带的示例),由于ID1是在2020年1月15日之前在level1中创建的,因此仅应显示ID 2。 我正在尝试使用以下语法-
SELECT
(CASE WHEN TM1.SYSTEM = 'level1' and TM1.Group1 = 'Created'
and TM1.C_Time >= '2019-11-01 00:00:00' THEN TM1.ID END) as CDF
FROM TABLE AS TM1
Where TM1.SYSTEM IN ('level2') AND TM1.Groups = 'CLOSE'
但是,我没有得到想要的结果。任何建议都会有所帮助。
谢谢大家
关于, 日西
答案 0 :(得分:0)
您可以按id分组,并在hading子句中设置条件:
select id
from tablename
group by id
having max(case when group1 = 'Status' and system = 'level2' then groups end) = 'CLOSE'
and max(case when group1 = 'Created' and system = 'level1' then c_time end) >= '2020-01-15 00:00:00'
请参见demo(对于MySql,但这是标准SQL)。
结果:
| id |
| --- |
| 2 |
答案 1 :(得分:0)
您可以这样写:
select id
from t
where (group1 = 'Status' and system = 'level2') or
(group1 = 'Created' and system = 'level1' and ctime > '2020-01-15')
group by id
having count(*) = 2;
以上内容假设您没有重复的行。如果这样做,请将having
更改为:
having count(distinct group1) = 2