我在查询中发现了这个问题:(抱歉,我会尝试简化表格定义并缩短细节。如果您还需要更多信息,请告诉我。)
我有(ID, date, status)
的表格。 ID
是FK,date
是日期,status
是1
和5
之间的int值。 date
和status
都允许空值。也允许重复的值。
我需要什么:
为每个ID
提取一行,min(date)
状态为1
或2
,min(date)
的{{1}} status
(仅),2
...
我完全失去了......我试图使用
max(status)
所以,问题是:这是正确的吗?如何只选择我想要的SELECT
ID,
min(date) over (partition by(status)) ?? as min_12_date,
min(date) over (partition by(status)) ?? as min_2_date,
max(status) as max_status
FROM table
group by ID
?
答案 0 :(得分:1)
如果我正确理解您的问题,您不需要解析功能。您只需要条件聚合:
select id,
min(case when status in (1, 2) then date end) as min_12_date,
min(case when status = 2 then date end) as min_2_date,
max(status) as max_status
from tbl
group by id