如何在不创建临时文件的情况下根据条件删除重复行 table
How to remove duplicate rows based on condition without creating temp table
谁能帮我查询一下结果。我已经被困在这里几个小时了。抱歉,我是 SQL 的新手。我需要从 Column1 和 Column2
中获取没有重复值的最新日期(column3)
SELECT COLUMN1, COLUMN2, COLUMN3
FROM TABLE1 t1
LEFT JOIN
TABLE2 t2
ON t1.column1 = t2.column1
Table 值:
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
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, COL2,COL3 )VALUES('VAL1',1234,'2019-04-12')
insert into MyTable (COL1, COL2,COL3 )VALUES('VAL1',1234,'2019-12-12')
insert into MyTable (COL1, COL2,COL3 )VALUES('VAL2',4321,'2019-12-12')
insert into MyTable (COL1, COL2,COL3 )VALUES('VAL2',3333,'2019-12-12')
insert into MyTable (COL1, COL2,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
| COL1 | COL2 | COL3 |
|------|------|------------|
| VAL1 | 1234 | 2019-12-12 |
| VAL2 | 3333 | 2019-12-12 |
| VAL3 | 2222 | 2019-10-10 |
谁能帮我查询一下结果。我已经被困在这里几个小时了。抱歉,我是 SQL 的新手。我需要从 Column1 和 Column2
中获取没有重复值的最新日期(column3)SELECT COLUMN1, COLUMN2, COLUMN3
FROM TABLE1 t1
LEFT JOIN
TABLE2 t2
ON t1.column1 = t2.column1
Table 值:
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
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, COL2,COL3 )VALUES('VAL1',1234,'2019-04-12')
insert into MyTable (COL1, COL2,COL3 )VALUES('VAL1',1234,'2019-12-12')
insert into MyTable (COL1, COL2,COL3 )VALUES('VAL2',4321,'2019-12-12')
insert into MyTable (COL1, COL2,COL3 )VALUES('VAL2',3333,'2019-12-12')
insert into MyTable (COL1, COL2,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
| COL1 | COL2 | COL3 |
|------|------|------------|
| VAL1 | 1234 | 2019-12-12 |
| VAL2 | 3333 | 2019-12-12 |
| VAL3 | 2222 | 2019-10-10 |