2017-03-09 178 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