oracle取某列最小,ORACLE 连接某个字段及分组后取某个字段最大(最小)等实现方法...

1.连接某个字段

对于表A 我们有B和C两个字段

有时候,我们想B相同的,C字段相连接的值,可以用WM_CONCAT和LISTAGG两种方法。其中LISTAGG为11g中的新特性。

两种用法如下:

SELECT WM_CONCAT(V.USER_NAME) AS USER_NAME, ITEM_ID

FROM USER_ITEM_VIEW V

GROUP BY ITEM_ID

HAVING COUNT(1) > 1查询结果:

0818b9ca8b590ca3270a3433284dd417.png

SELECT LISTAGG(V.USER_NAME, ',') WITHIN GROUP(ORDER BY V.USER_NAME) AS USER_NAME,

V.ITEM_ID

FROM USER_ITEM_VIEW V

GROUP BY V.ITEM_ID

HAVING COUNT(1) > 1;LISTAGG可以自定义分隔符,且速度更快。

0818b9ca8b590ca3270a3433284dd417.png

分组后取得某个字段最大或最小的记录:

SELECT LASTM_DUMMY, ZONE_ID, CREATED_ON

FROM (SELECT A.*,

ROW_NUMBER() OVER(PARTITION BY A.ZONE_ID ORDER BY CREATED_ON DESC) RN

FROM A) B

WHERE B.RN = 1

ORACLE实现九九乘法表:

SELECT REVERSE(sys_connect_by_path(REVERSE(rpad(rownum * lv, 2)) || '=' ||

rownum || '*' || lv,

'

'))

FROM (SELECT LEVEL lv FROM dual CONNECT BY LEVEL < 10) t

WHERE lv = 1

CONNECT BY lv + 1 = PRIOR lv;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值