Отличительный запрос в SQL Server 2005 - PullRequest
1 голос
/ 01 апреля 2011

У меня есть таблица, в которой есть три поля: ID, Name, aDate.Я хочу, чтобы результат на отдельном имени, и я хочу, чтобы дата была в результате.Я использую запрос как

Select distinct(Name),adate from table_name.

Но я получаю неправильные результаты. Я думаю, что sql применяет различные комбинации двух полей.Чем я могу помочь.Мне нужны разные значения имени с соответствующим полем adate.

Ответы [ 2 ]

6 голосов
/ 01 апреля 2011

Если вы хотите указать ОДНУ дату для каждого имени, вам нужно указать , которая дата:

Например:

 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 голосов
/ 01 апреля 2011

Distinct не работает на одном поле, он работает на всю строку полей в запросе.Поэтому то, что вы спрашиваете, не имеет смысла.

Если в вашей таблице есть строки, подобные этой

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

, то когда вы вызываете Select distinct name, date, что вы ожидаете увидеть в столбце даты?

Вам необходимо решить, какая дата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...