如果一个值为null,则获取该季度的先前值,在sql select query

时间:2016-04-29 10:15:11

标签: sql sql-server sql-server-2012 group-by

我的数据如下所示,

enter image description here

现在我想得到结果,

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

因此,如果上个月的数据在该季度为空,则获得最后一个数据。 例如:在Q3中,9月的活动为空,所以我应该显示8月的数据。

1 个答案:

答案 0 :(得分: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;