2016-11-24 13 views
0

У меня есть таблица:SQL Select, когда таблица содержит несколько одинаковых записей для конкретной функции

| id_record | code  |  date | 
--------------------------------------------- 
|  12395  | 90  | 23-11-2016 | 
|  18733  | 90  | 05-10-2016 | 
|  10084  | 9201 | 13-10-2016 | 
|  10400  | 9000 | 23-11-2016 | 

Входной параметр @date (DateTime). @date='24-11-2016'. Я хочу получить:

| id_record | code  |  date | 
--------------------------------------------- 
|  12395  | 90  | 23-11-2016 | 
|  10084  | 9201 | 13-10-2016 | 
|  10400  | 9000 | 23-11-2016 | 

т.е. Я хочу, чтобы получить каждый код, который max(date)<[email protected] и distinct code значение. какой запрос я должен использовать?

+1

Если это так, то запись '| 18733 | 90 | 05-10-2016 | 'также меньше даты' '24 -11-2016''. – Viki888

+0

Также вы используете MySQL и SQL-SERVER? – Viki888

+0

Извините, я использую только SQL-сервер. Да, это, запись '| 18733 | 90 | 05-10-2016 | 'также меньше даты' '24 -11-2016'', но мне нужен выбор по «коду» и «дате». И аргумент '' code'' должен отличаться от 'max (date) <= '24-11-2016'' – Kris

ответ

0
CREATE TABLE Table3 
    (id_record int, code int, date varchar(10)) 
; 

INSERT INTO Table3 

VALUES 
    (12395, 90, '23-11-2016'), 
    (18733, 90, '05-10-2016'), 
    (10084, 9201, '13-10-2016'), 
    (10400, 9000, '23-11-2016') 



    with cte as (
     select *,row_number() over(partition by code order by date desc) as rn from Table3 
     ) 
     select id_record,code,date from cte where rn=1 and date<='24-11-2016' 
+0

Если вы используете ваш запрос, я получу только '' date'', но мне нужно получить 'id_record, code, date' – Kris

+0

i ediited мой ответ можно проверить один раз @Kris – Chanukya

+0

Спасибо, @ Chanukya! – Kris