GROUP BY ORDER BY 同时使用按时间排序

      需要:合并相同用户名,公司按逗号分隔。并且要按新增修改时间排序。

上查了一下   GROUP BY ORDER BY 想要同时使用 ,ORDER BY  中的字段一定要在GROUP BY 中出现的字段,但这样会导致不同时间添加的同一用户名下没办法合成同一条数据。

后来自己研究了一下发现 可以用max函数  MAX(A.STATE_TIME) STATE_TIME ,这样就不用放GROUP BY 中了。

SELECT A.USER_ID,

 A.USER_NAME,

       MAX(A.STATE_TIME) STATE_TIME,
       COLUMNTOROW(',' || A.SAP_COST_CENTER_ID) SAP_COST_CENTER_ID,
       COLUMNTOROW(',' || TO_CHAR(A.SAP_COST_CENTER_NAME)) SAP_COST_CENTER_NAME
  FROM CFG_USER_PART_TIME A
  LEFT JOIN (SELECT *
               FROM (SELECT MAX(USER_ID) USER_ID, ORG_ID
                       FROM FFDEV.P_M_USERS_ORGS
                      GROUP BY ORG_ID) B
               LEFT JOIN P_M_ORG_LOCATION C
                 ON B.ORG_ID = C.ORG_ID) D
    ON A.USER_ID = D.USER_ID
 WHERE A.STATE = '10A'
 GROUP BY A.USER_ID, A.USER_NAME
 ORDER BY STATE_TIME DESC

这样就可以按时间排序了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值