2016-04-29 31 views
1

我有數據,如下圖所示,如果一個值爲null在該季度獲得前值,在SQL SELECT查詢

enter image description here

現在,我想結果是,

DateDisplayName Active 
Q2(Jun)-2015  736 
Q3(Sep)-2015  734 
Q4(Dec)-2015  NULL 
Q1(Mar)-2016  NULL 

因此,如果上個月的數據在該季度爲空,那麼只得到一個數據。 例如:在Q3中,9月份的Active爲空,因此我將顯示8月份的數據。

+0

8月有哪些數據?你使用的是哪個版本的SQL? –

+0

如果你看上面的圖片,你可以看到一個201508的記錄,這是2015Aug數據,但我們將它標記爲Q3(Sep)-2015。 – Prasu

+1

您使用的是什麼版本的SQL? –

回答

2

你會排名你的記錄。使用ROW_NUMBER爲每個季度行號1提供最佳記錄,然後僅保留這些記錄。

select 
    date_display_name, 
    active 
from 
(
    select 
    date_display_name, 
    active, 
    row_number() over 
    (
     partition by date_display_name 
     order by 
     case when active is null then 2 else 1 end, 
     defaultdate desc 
    ) as rn 
    from mytable 
) ranked 
where rn = 1; 
相關問題