我可以: 邀请好友来看>>
ZOL星空(中国) > 技术星空(中国) > SQL Server星空(中国) > 一个patition by的问题
帖子很冷清,卤煮很失落!求安慰
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

一个patition by的问题

81浏览 / 4回复

103
精华
103
帖子

等  级:Lv.1
经  验:0
  • Z金豆:

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:
  • 注  册:
  • 登  录:
发表于 2009-01-04 11:39:26
电梯直达 确定
楼主
ID   COlA  COLB
1      a      f
2      a     g
3      b     g
4      b     h
5      c      h
6      c      i
假如我有一个表的内容如上,我现在想根据cola或者colb来分组,选出最大的id,返回的结果应该如下

ID   COlA  COLB   MAX_ID
1      a      f           6
2      a     g           6
3      b     g           6
4      b     h           6
5      c      h          6
6      c      i           6
用select id,cola,colb,max(id) over(partition by cola,colb) from table的话,那么只有cola,colb都相同的情况下才能认为是同一组。我现在想只要cola或者colb相同就被认为是同一组。有没有什么好的办法?
就像这样的用法
select id,cola,colb,max(id) over(partition by cola or colb) from table
请向各位高手请教。



精华

帖子

等  级:Lv.1
经  验:0
发表于 2009-01-04 11:39:26 1楼
我觉得“现在想只要cola或者colb相同就被认为是同一组”这个逻辑上有点问题。
会造成冲突的。例如7  c  g 是在b g下方还是c h 上方?

我现在没有环境测试,不知道下面语句是否可行:
select id,cola,colb,max(id) over(partition by cola order by max(id) over(colb) ) from table




jxxfit

jxxfit


精华

帖子

等  级:Lv.2
经  验:407
发表于 2009-01-04 11:39:26 2楼
select id,cola,colb,max(id) over(partition by cola order by max(id) over(partition by  colb) ) from table


精华

帖子

等  级:Lv.1
经  验:0
发表于 2009-01-04 11:39:26 3楼
好像不行哦,
其实意思就是按a或者b来分组,并找出每组最大的id,
也就是如果a与b两个字段,只要任何一个字段 相同,就认为是同一组的。
如果第一行和第二行按a分属同一组,第2行与第3行按b分又属同一组,那么这三行都属于同一组。



zgh3567it

zgh3567it


精华

帖子

等  级:Lv.3
经  验:801
发表于 2009-01-04 11:39:26 4楼
嗯,所以偶还是觉得你的逻辑有问题。
ms 按你的想法,上面左右数据都在一个组的样子。^_^

高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表