如何根据条件删除重复的行而不创建临时表

有人可以帮助我获得结果查询吗?我在这里呆了几个小时。抱歉,我刚接触SQL。我需要获取最新日期(column3),而不能从Column1和Column2中获取重复的值

SELECT COLUMN1,COLUMN2,COLUMN3
FROM TABLE1 t1
LEFT JOIN
     TABLE2 t2
 ON t1.column1 = t2.column1

表值:

COLUMN1        COLUMN2        COLUMN3
VAL1             1234        2019-05-12    
VAL1             1234        2019-04-12
VAL1             1234        2019-12-12
VAL2             4321        2019-11-12
VAL2             3333        2019-12-12
VAL3             2222        2019-10-10

预期结果:

COLUMN1         COLUMN2        COLUMN3
VAL1             1234        2019-12-12
VAL2             3333        2019-12-12
VAL3             2222        2019-10-10
lilywang2009 回答:如何根据条件删除重复的行而不创建临时表

SQL Fiddle

MS SQL Server 2017架构设置

create table MyTable (COL1 varchar(max),COL2 int,COL3 date)
insert into MyTable (COL1,COL2,COL3 )VALUES('VAL1',1234,'2019-05-12')
insert into MyTable (COL1,'2019-04-12')
insert into MyTable (COL1,'2019-12-12')
insert into MyTable (COL1,COL3 )VALUES('VAL2',4321,3333,COL3 )VALUES('VAL3',2222,'2019-10-10')

查询1

select t.COL1,t.COL2,t.COL3
from (select m.*,row_number() over (partition by m.COL1
                                order by m.COL2,m.COL3 desc) as seqnum
      from MyTable m
     ) t
where t.seqnum=1

Results

| COL1 | COL2 |       COL3 |
|------|------|------------|
| VAL1 | 1234 | 2019-12-12 |
| VAL2 | 3333 | 2019-12-12 |
| VAL3 | 2222 | 2019-10-10 |
本文链接:https://www.f2er.com/3166914.html

大家都在问