今天朋友给发了一个有意思的SQL格式整理问题~
/*
Columns1 Columns2
A1 B1
A1 B1
A1 B2
A2 B2
A2 B3
A3 B1
*/
-- Expect result data:
/*
Columns1 Columns2
A1 B1
A2 B2
A3 B1
*/
[解决办法]
select Columns1 ,min(Columns2) from tb group by Columns1
[解决办法]
select * from tb t where columns2=(select min(columns2) from tb where columns=t.columns)
[解决办法]
select Columns1 ,min(Columns2) from tb group by Columns1
select * from tb t where columns2=(select min(columns2) from tb where columns=t.columns)
两个都可以,那假如最小的col2有重复的怎么处理?是全部显示出来还是只取一个?
[解决办法]
可能给的数据、结果不够典型
否则3楼的sql就行了
[解决办法]
select * from (
select Columns1, Columns2,row_number() over (partition by Columns1 order by Columns2) cnt from table )
where cnt =1
[解决办法]
select Columns1,min(Columns2) from tb group by Columns1
[解决办法]
CREATE TABLE #TEMP(ID VARCHAR(2),ID2 VARCHAR(2))INSERT INTO #TEMPSELECT 'A1','B1'UNION ALLSELECT 'A1','B1'UNION ALLSELECT 'A1','B2'UNION ALLSELECT 'A2','B2'UNION ALLSELECT 'A2','B3'UNION ALLSELECT 'A3','B1'SELECT DISTINCT * FROM #TEMP T0 WHERE NOT EXISTS(SELECT 1 FROM #TEMP WHERE T0.ID=ID AND T0.ID2>ID2)/*ID ID2A1 B1A2 B2A3 B1*/
[解决办法]
問清他的需求.有岐意.
[解决办法]
不太懂 。。。。 哎