2013-04-30 58 views
2

我在查找如何執行下面的查詢時遇到了一些問題。我想爲表1中的每個唯一ID返回一行,即使日期爲空,但如果有多個具有相同ID的行,我只想返回具有最近日期的ID。任何幫助,將不勝感激選擇查詢,其中具有相同ID的行僅返回具有最新日期字段的行

Select a.ID, a.[zip code], b.date 
      from table1 a 

      left join table 2 b on a.ID = b.ID 
      Where a.[Zip Code] = '78701' 
Group by a.ID, a.[zip code], b.date 
      Order by a.[zip code] asc 

回答

3

您可以使用子查詢來選擇table2每個ID只有最大日期:

SELECT a.ID, a.[zip code], b.date 
FROM table1 a 
LEFT JOIN (SELECT ID, MAX(date) AS date 
      FROM table2 
      GROUP BY ID) b ON a.ID = b.ID 
WHERE a.[Zip Code] = '78701' 
ORDER BY a.[zip code] ASC 
+0

太好了!無論如何,通過而不是一個子查詢來獲得這一點? – 2013-04-30 20:35:44

+0

不確定你的意思。你希望分組,究竟是什麼? (在問題中顯示示例輸入和所需的輸出可以幫助解決這個問題。) – 2013-04-30 20:37:10

+0

只需抓住該問題;)非常感謝! – 2013-04-30 20:58:27

2

你也可以有改變您的查詢的結果相同:

SELECT a.ID, a.[zip code], MAX(b.date) AS [date] 
FROM  table1 AS a  
       LEFT JOIN table2 AS b 
        ON a.ID = b.ID 
WHERE  a.[Zip Code] = '78701' 
GROUP BY a.ID, a.[zip code] 
ORDER BY a.[zip code] ASC ; 
相關問題