SQL Select Distinct с целочисленными значениями и типами - PullRequest
0 голосов
/ 17 декабря 2009

У меня есть запрос, который возвращает количество целых и кратных значений.

Я хочу, чтобы результат отличался, но только от одного целого.

SELECT DISTINCT
        t.TaskID ,
        td.[TestSteps]
FROM    SOX_Task t
snip

Есть ли простой способ сделать это?

Ответы [ 2 ]

3 голосов
/ 17 декабря 2009

DISTINCT не работает таким образом ... он гарантирует, что все строки не дублируются. Кроме того, если это так, как он решит, какие значения должны отображаться в других столбцах?

То, что вы, вероятно, хотите здесь сделать, это GROUP BY для столбца, который вы хотите выделить, а затем применить соответствующий агрегатный оператор к другим столбцам, чтобы получить значения, которые вы хотите (например, MIN, MAX, SUM, AVG и т. д.).

Например, следующее возвращает отдельный список идентификаторов задач с максимальным количеством шагов для этой задачи. Это может быть не совсем то, что вы хотите, но это должно дать вам общее представление.

SELECT t.TaskID, MAX(t.TestSteps)
FROM SOX_Task t
GROUP BY t.TaskID
1 голос
/ 17 декабря 2009

Я хочу, чтобы результат отличался, но только от одного целого.

Это:

SELECT DISTINCT t.taskid
  FROM SOX_TASK t

... вернет список уникальных значений Taskid - дубликатов не будет.

Если вы хотите вернуть определенное значение, вам нужно указать его в предложении WHERE:

SELECT t.*
  FROM SOX_TASK t
 WHERE t.taskid = ?

Это вернет все строки с конкретным значением taskid. Если вы хотите получить список значений, связанных со значением taskid:

SELECT DISTINCT t.*
  FROM SOX_TASK t
 WHERE t.taskid = ?

GROUP BY - это еще один способ получения уникальных / уникальных значений, и я предпочитаю использовать его, но для использования GROUP BY нам нужно знать столбцы в таблице и какую группу вы хотите.

...