2016-06-07 2 views
2

Эй, я просто застрял в этом вопросе. Использование SQL-сервераПолучить последние строки по дате из совокупности

я есть в таблице, UNIQUE (дата, medId, идентификатор пользователя)

У меня есть эта таблица

date  | medId | userId | Quantity 
2016-06-10 | 2 | 1 | 28 
2016-06-07 | 1 | 1 | 19 
2016-06-06 | 1 | 1 | 10 

я хочу, чтобы получить строку с максимальной датой, в каждой группе из medId, USERID, в этом случае я хотел бы получить

2016-06-10 | 2 | 1 | 28 
2016-06-07 | 1 | 1 | 19 

заранее спасибо!

я попытался это

SELECT 
    a.userMedStockDate, 
    a.userMedStockMedId, 
    a.userMedStockUserId, 
    a.userMedStockQuantity 
FROM (SELECT 
     MAX(userMedStockDate) AS userMedStockDate, 
     userMedStockQuantity, 
     userMedStockUserId, 
     userMedStockMedId, 
     ROW_NUMBER() OVER (partition by userMedStockMedId,userMedStockUserId 
          ORDER BY MAX(userMedStockDate) desc) AS rnk 
     FROM UserMedStock 
     GROUP BY 
     userMedStockUserId, 
     userMedStockQuantity, 
     userMedStockMedId) a 
WHERE a.rnk = 1 

[РЕШИТЬ]

ответ

1

это должно работать

select * from 
(
select 
[date] , medId, userId ,Quantity 
,row_number() over (partition by medId, userId order by [date] desc) as rowid 
from yourtable 
) as x 
where rowid = 1 
0

Может попробовать это:

select y.* from 
table1 y inner join 
(
SELECT [Date] = MAX([Date]), medId, userId 
    FROM table1 
    GROUP BY medId, userId 
) x on y.[Date] = x.[Date] and y.medId = x.medId and y.userId = x.userId 
+0

не работает, но спасибо – franmcod

0

я изменил поля мой фактический стол, но здесь

SELECT 
a.userMedStockDate, a.userMedStockMedId, a.userMedStockUserId,  a.userMedStockQuantity 
FROM(
SELECT 
MAX(userMedStockDate) AS userMedStockDate, 
userMedStockQuantity, 
userMedStockUserId, 
userMedStockMedId, 
ROW_NUMBER()OVER(partition by userMedStockMedId, userMedStockUserId ORDER BY MAX(userMedStockDate) desc) AS rnk 
FROM UserMedStock 
GROUP BY userMedStockUserId, userMedStockQuantity, userMedStockMedId 
) a 
WHERE a.rnk = 1 
Смежные вопросы