2012-05-16 4 views
0

Оригинал таблицыНужна помощь для SQL Distinct

+-- Col 1 --+-- Col 2 --+ 
+-- 1 --+-- a --+ 
+-- 1 --+-- b --+ 
+-- 1 --+-- c --+ 
+-- 2 --+-- d --+ 
+-- 3 --+-- e --+ 
+-- 3 --+-- f --+ 
+-----------------------+ 

Результат:

+-- Col 1 --+-- Col 2 --+ 
+-- 1 --+-- a --+ 
+-- 2 --+-- d --+ 
+-- 3 --+-- e --+ 
+-----------------------+ 

Любая идея, как отчетливый стол?

+0

Для какой базы данных? И что ты пробовал? –

+0

Вы пытались посмотреть, что происходит с 'distinct col1'? – noMAD

ответ

1

«DISTINCT» применяется к каждому столбцу в результирующем наборе.

«GROUP BY» предоставит требуемый результат, но вам нужно подумать о том, имеет ли значение «col2» реальное значение в вашем результирующем наборе.

SELECT col1, min(col2) as col2 
     FROM T 
    GROUP BY col1 
+0

нет реального смысла. Я просто хочу получить уникальную запись в колонке 1 и любую запись из col 2 – user1397624

0
SELECT t.Col1, t.Col2 
FROM T t 
WHERE NOT EXISTS(SELECT * 
       FROM T s 
       WHERE t.Col1 = s.Col1 AND t.Col2 > s.Col1) 
0

Вы не одинаковое значение в col2 для тех же значений в col1, поэтому результат не может быть порождена DISTINCT, если вы выбираете обе колонки.

0

Если вы используете SQL Server, с именем таблицы является TEST, вы можете использовать CROSS ОТНОСИТЬСЯ в T-SQL, как показано ниже:

SELECT DISTINCT Col1, TEST2.Col2 FROM TEST 
CROSS APPLY (SELECT TOP 1 Col2 FROM TEST TEST2 
     WHERE TEST2.Col1 = TEST.Col1) TEST2 
Смежные вопросы