2016-09-28 88 views
0

我剛剛在查詢中發現了這個問題:(對不起,我會盡量簡化表格定義並縮短細節,如果您需要更多,請告訴我)。使用過濾器獲取分區數據的最小值和最大值

我有一張表(ID, date, status)ID是FK,date是日期,而status是在15之間的整數值。 datestatus都允許空值。重複值也是允許的。

我需要什麼: 抽取一行每個IDmin(date)具有含2status(只),max(status)一個的12min(date)狀態...

我完全失去了..我試圖使用

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 

所以,問題是:這是正確的嗎?我怎樣才能選擇我想要的status

回答

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 
+0

非常感謝!我被分區混淆了...... – Tistkle

相關問題