t-sql запрос с group by

Docman80

Итак, случился жуткий затуп, а мне нужно сделать следующее:
есть таблица проектов, с колонками ID, createdOn, customerID
нужно сгруппировать по customerID и выбрать записи с максимальной createdOn в каждой группе.
select max(createdOn customerID
from tbl_Opportunity
group by customerID
естественно не дает вставить в селект ещё и колонку ID
как быть?

hprt


with cte as (
select
Id
, CustomerID
, CreatedOn
, rn = row_number over (partition by CustomerID order by CreatedOn desc
from
tbl_Opportunity
)
select * from cte where rn = 1

Docman80

чорд, совсем забыла про cte. Спасибо!

hprt

можно и без цте, просто из подзапроса выбрать :)

Docman80

это да. А вот без over partition можно как-нибудь? проблема в том, что запрос желательно не напрямую в mssqls писать, а в приложении, с помощью конструктора, короче говоря, как можно более простыми операторами.

hprt

ну тогда джойни с результатами группировки. тогда придется как-то еще решать вопрос дубликатов, если две записи имеют максимальную дату

PooH


SELECT t2.*

FROM (select max(createdOn) as maxCreatedOn, customerID
     from tbl_Opportunity
     group by customerID) as t1

INNER JOIN tbl_Opportunity as t2

ON t1.customerID = t2.customerID AND
     t1.maxCreatedOn = t2.createdOn
 
Оставить комментарий
Имя или ник:
Комментарий: