2017-03-09 70 views
1

我有一个数据SQL - 选择有条件

Table1 
KEY  END_DATE   
1  1974-01-01    
1  NULL    
1  2020-01-01    
2  NULL     
2  NULL    
2  NULL    
3  1997-10-01    
3  1974-01-01   
3  1976-01-01     
3  1978-01-01    
4  NULL    
4  1997-10-01    
4  2008-04-01    

在上表的表来获得不同的集合我有4个条件
对于重点1 - MAX(END_DATE)> GETDATE()( Todat日期),也有在这种情况下NULL我应该得到的一组最大日
为重点2 - 只有空的,所以我们应该得到空
对于键3 - 无空值和MAX(END_DATE)< GETDATE(),所以我们应该得到的MAX(END_DATE)
为重点4 - 都是空和MAX(END_DATE)< GETDATE(),所以我们应该得到的NULL

下面是结果表

Result Table 
KEY  END_DATE     
1  2020-01-01    
2  NULL    
3  1997-10-01    
4  NULL    

我应该得到的所有独特的按键与上述4个条件的选择

感谢

+0

这里有什么问题? – rageandqq

回答

3

如果我理解正确END_DATE,你康迪特离子:

  • 最大的结束日期,如果没有NULL值或
  • 最大结束日期是未来

这只是一些条件聚合:

select key, 
     (case when count(*) = count(end_date) then max(end_date) 
      when max(end_date) > getdate() then max(end_date) 
     end) as end_date 
from t 
group by key; 
+0

谢谢戈登这个作品 – AB04