为某些列选择DISTINCT,为其他列选择最小值(什么是`Group by`?)

时间:2012-07-02 14:38:04

标签: sql sql-server-2008-r2 aggregate-functions

我有一个包含两列的表TableAMyName nvarchar(100)MyDateTime DateTime。每个MyName可能有多个记录具有不同的DateTime s。我正在尝试从表中返回包含MyName的每个值的记录集,每个值最早为MyDateTime

这可以返回不同的MyNames

SELECT DISTINCT([MyName]) FROM TableA

我尝试了不同的UNION语句,但我的所有尝试都被DISTINCT()关键字抛弃了。例如,以下查询会查找所有时间,而不仅仅是每个时间的最小值:

SELECT DISTINCT([MyName]), [MyDateTime] FROM TableA

努力想出正确的SQL语法来实现这一目标。有什么帮助吗?

2 个答案:

答案 0 :(得分:7)

SELECT MyName, MIN(MyDateTime)
FROM TableA
GROUP BY MyName;

答案 1 :(得分:3)

  

所有不同的[MyName]来自具有earlist [MyDateTime]的表。

您需要GROUP BY MyName使用MIN(MyDateTime),类似于:

SELECT MyName, MIN(MyDateTime)
FROM myTable
GROUP BY MyName