日期:2014-05-18  浏览次数:20586 次

今天朋友给发了一个有意思的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
*/

------解决方案--------------------
SQL code
select Columns1 ,min(Columns2) from tb group by Columns1

------解决方案--------------------
SQL code
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


------解决方案--------------------
SQL code

select Columns1,min(Columns2) from tb group by Columns1

------解决方案--------------------
探讨
/*
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
*/

------解决方案--------------------
SQL code

CREATE TABLE #TEMP(ID VARCHAR(2),ID2 VARCHAR(2))
INSERT INTO #TEMP
SELECT 'A1','B1'
UNION ALL
SELECT 'A1','B1'
UNION ALL
SELECT 'A1','B2'
UNION ALL
SELECT 'A2','B2'
UNION ALL
SELECT 'A2','B3'
UNION ALL
SELECT 'A3','B1'


SELECT DISTINCT * FROM #TEMP T0 WHERE NOT EXISTS(SELECT 1 FROM #TEMP WHERE T0.ID=ID AND T0.ID2>ID2)

/*
ID ID2
A1 B1
A2 B2
A3 B1
*/

------解决方案--------------------
問清他的需求.有岐意.
------解决方案--------------------
不太懂 。。。。 哎