【发布时间】:2020-11-19 16:21:50
【问题描述】:
提前谢谢大家!我试图尽可能清楚地描述这一点。
我有两个子表,第一个表检索Comfirmed_Date,第二个表检索Mail_Date,条件为Mail_Date >= Comfirmed_Date。
select
a.ID
,g.ROWNUM
,f.CORM_DT
,g.MAIL_DT
from
SOURCE_U a
left join
(select
a.SOURCE_ID
, Max(Cast(b.ATUF_DATE3 as date)) as [CORM_DT]
from
ATTACH_U a
inner join
USERFLD_D b on a.DEST_CK = b.DEST_CK
group by
a.SOURCE_ID) f on f.SOURCE_ID = a.SOURCE_ID
left join
(select
a.SOURCE_ID
, cast(b.MAILED_DT as date) as MAIL_DT
, row_number() over (partition by SOURCE_ID order by CREATE_DT) as ROWNUM
from
ATTACH_U a
left join
LETTER_D b on b.DEST_CK = a.DEST_CK) g on g.SOURCE_ID = a.SOURCE_ID
and g.MAIL_DT >= f.CORM_DT
我需要表格的第一行(最小的row_num),我该如何实现?
原来我觉得我可以做出类似的条件
where g.ROWNUM = 1
但是因为我在联表上有条件,所以下面的情况就不行了。
ID gROWNUM CORM_DT MAIL_DT
1001 3 2020-10-20 2020-10-22
1001 4 2020-10-20 2020-10-30
1002 2 2020-10-20 2020-10-21
1002 3 2020-10-20 2020-10-23
1002 4 2020-10-20 2020-10-28
1003 1 2020-10-20 2020-10-30
1004 1 2020-10-20 2020-10-21
1004 2 2020-10-20 2020-10-23
1005 4 2020-10-20 2020-10-28
1006 1 2020-10-20 2020-10-30
我只想在这里为每个 ID 写一行。
【问题讨论】:
-
按
gROWNUM和SELECT TOP 1...排序 -
@CriticalError 很抱歉我还是没说清楚,它包含多个 ID...
标签: sql sql-server sql-server-2012 logic row-number