2011-04-01 127 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