Различают по каждому столбцу - PullRequest
1 голос
/ 03 июня 2009

Мне нужно выбрать 3 столбцы из таблицы, но мне нужно, чтобы каждое значение из любого столбца было уникальным в наборе результатов для этого столбца.

Этот запрос:

SELECT DISTINCT TOP 10 a, b, c
FROM   x

вернет 10 различных наборов.

Как мне это сделать?

Ответы [ 3 ]

4 голосов
/ 03 июня 2009
WITH q AS
        (
        SELECT  a, b, с, ROW_NUMBER() OVER (ORDER BY a, b, c) AS rn
        FROM    mytable
        )
SELECT  TOP 10 a, b, c
FROM    q q1
WHERE   NOT EXISTS
        (
        SELECT  1
        FROM    q
        WHERE   q.rn < q1.rn
                AND q.a = q1.a
        )
        AND NOT EXISTS
        (
        SELECT  1
        FROM    q
        WHERE   q.rn < q1.rn
                AND q.b = q1.b
        )
        AND NOT EXISTS
        (
        SELECT  1
        FROM    q
        WHERE   q.rn < q1.rn
                AND q.c = q1.c
        )
1 голос
/ 03 июня 2009

Я не знаю, возможно ли это за один выстрел. Я бы сделал это, создав переменную таблицы.

DECLARE @Results TABLE
(
  a varchar(100),
  b varchar(100),
  c varchar(100)
)
INSERT @Results(a)
SELECT DISTINCT a FROM myTable

INSERT @Results(b)
SELECT DISTINCT b FROM myTable

INSERT @Results(c)
SELECT DISTINCT c FROM myTable

SELECT a,b,c FROM @Results
1 голос
/ 03 июня 2009

не этот вопрос не дает вам то, что вы хотите?

...