2015-02-22 4 views
0

У меня есть эта таблицаВыбрать верхние 2 ряда отличаются друг от друга

|  date | sum | 
|--------------|-------| 
| 2015-02-19 | 10000 | 
| 2015-02-19 | 10000 | 
| 2015-02-20 | 15000 | 
| 2015-02-20 | 15000 | 
| 2015-02-21 | 18000 | 
| 2015-02-21 | 18000 | 

Я хочу, чтобы выбрать верхние 2 строки из таблицы, но только разные из них, то есть мой результат должен возвращать 2015-02-20 и 2015-02-21.

SELECT TOP 2 distinct date 
FROM stock 

Используя это дает мне ошибку:

Incorrect syntax near the keyword 'distinct'.

Помощь будет высоко оценен.

+1

Какой порядок вы используете? –

+0

Я использую «ORDER BY date DESC» –

+0

Вам небезразлично поле 'sum'? –

ответ

2

Вы можете попробовать, как этот

select top 2 * from 
(
    select distinct date FROM stock 
) 
2

Попробуйте что-то вроде:

SELECT TOP 2 date 
FROM stock 
GROUP BY date 
2

Я думаю Четкая и Top должны поменяться местами в запросе:

SELECT DISTINCT TOP 2 date FROM stock ORDER BY date DESC 
+1

Да. http://sqlfiddle.com/#!3/a8b2e/2 –

0

Попробуйте это:

WITH cte AS 
(SELECT distinct date , 
     ROW_NUMBER() OVER (PARTITION BY date 
          ORDER BY date DESC 
         ) 
     AS rn 
    FROM stock 
) 
SELECT date 
FROM cte 
WHERE rn <= 3 
ORDER BY rn ; 
+0

Вы проигнорировали часть о различных значениях. –

0

Попробуйте это:

SELECT TOP 2 date FROM stock group by date 
+0

@ Аник Ислам Абхи Разница, когда я отправлял ответ SMA, я не видел сообщение. –

1

попробовать

select distinct top 2 date from stock 
1

Вы можете использовать GROUP BY:

SELECT TOP 2 date 
FROM stock 
GROUP BY date 
ORDER BY date DESC 

Пример результата:

DATE 
2015-02-21 
2015-02-20 

См. Результат в SQL Fiddle.

Смежные вопросы