2011-04-01 168 views
1

我有一個表有三個ID字段,名稱,aDate字段。我想結果在不同的名稱,我希望日期在結果。我使用的查詢作爲SQL Server 2005中的不同查詢

Select distinct(Name),adate from table_name. 

但我正在逐漸錯results.i認爲SQL是在這兩個領域的結合底肥不同。我做什麼幫助我。我想要不同的名稱值與他們各自的adate字段。

回答

6

如果你只是想每名ONE日期,那麼你必須指定其中日期:

如:

SELECT Name, Max(aDate) 
FROM table_name 
GROUP BY Name 

由於此語句使用GROUP BY Name它只會返回一個行每個名稱。由於它使用aDate的聚合(在我的示例中爲MAX()函數),它將返回所需的相應日期。

一般來說,您應該儘量避免使用DISTINCT關鍵字。很少有正確的方法。

如果你只是想在你的表使用不同的名稱的列表,你可以使用

SELECT DISTINCT Name 
FROM table_name 

這將返回相同結果

SELECT Name 
FROM table_name 
GROUP BY Name 
+0

+1。究竟。最大值,第一,最後,無論如何....但你需要決定什麼顯示在非分組字段。 – TomTom 2011-04-01 12:24:09

0

Distinct不能在一個字段上工作,它在查詢中的整行字段中起作用。 所以你所問的沒有意義。

如果你的表中有這樣

|ID|Name|Date| 
|1|John|2011-4-1| 
|2|John|2011-4-2| 
|3|John|2011-4-2| 

行那麼當你調用Select distinct name, date什麼是你期待在日期欄看?

你需要決定哪個日期。

+0

是他們執行不同的任何其他方式在一個字段 – sumit 2011-04-01 12:19:26