今天朋友给发了一个有意思的SQL格式整理问题~

伴老思源 2012-03-15 03:04:25
/*
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
*/
...全文
255 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
伴老思源 2012-03-20
  • 打赏
  • 举报
回复
权当散分了~


chosenboa 2012-03-17
  • 打赏
  • 举报
回复
不太懂 。。。。 哎
伴老思源 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sunylf 的回复:]

問清他的需求.有岐意.
[/Quote]

呵,说是让自己仔细想想,考虑各种可能~

sunylf 2012-03-16
  • 打赏
  • 举报
回复
問清他的需求.有岐意.
mugua604 2012-03-16
  • 打赏
  • 举报
回复

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
*/
伴老思源 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dawugui 的回复:]
--如果仅仅按照你给的数据,分组取最小即可.
select Columns1 ,min(Columns2) Columns2 from tb group by Columns1
[/Quote]

话说,当时我给他回的也是这么写的,丫说不对,让再想想~~~~~~~~我了个去&!#$%^
dawugui 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 abandonship 的回复:]
/*
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
*/
[/Quote]
--如果仅仅按照你给的数据,分组取最小即可.
select Columns1 ,min(Columns2) Columns2 from tb group by Columns1

--或者是取第一个吗?
select t.* from tb t where Columns2 = (select top 1 Columns2 from tb where Columns1 = t.Columns1)
EnForGrass 2012-03-15
  • 打赏
  • 举报
回复

select Columns1,min(Columns2) from tb group by Columns1
usbusb2007 2012-03-15
  • 打赏
  • 举报
回复
select * from (
select Columns1, Columns2,row_number() over (partition by Columns1 order by Columns2) cnt from table )
where cnt =1

haitao 2012-03-15
  • 打赏
  • 举报
回复
可能给的数据、结果不够典型
否则3楼的sql就行了
  • 打赏
  • 举报
回复
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有重复的怎么处理?是全部显示出来还是只取一个?
--小F-- 2012-03-15
  • 打赏
  • 举报
回复
select * from tb t where columns2=(select min(columns2) from tb where columns=t.columns)
黄_瓜 2012-03-15
  • 打赏
  • 举报
回复
select Columns1 ,min(Columns2) from tb group by Columns1


你这朋友还真有意思

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧