加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle 分组排序聚合之group by

发布时间:2020-12-12 14:42:45 所属栏目:百科 来源:网络整理
导读:一个人显示一行记录,一次性待遇和定期待遇在同一行。 发来一个查询语句如下,很长。别吓坏了,用的东西不多,实质就是 分组,聚合 SELECT C.*,(C.AAE019OLD + C.AAE019CE) AAE019NEW FROM (SELECT T.AAZ257,T.AAC001,T.AAB001,T.AAC147,T.AAC003,T.AAC004,T

一个人显示一行记录,一次性待遇和定期待遇在同一行。

发来一个查询语句如下,很长。别吓坏了,用的东西不多,实质就是 分组,聚合

SELECT C.*,(C.AAE019OLD + C.AAE019CE) AAE019NEW
  FROM (SELECT T.AAZ257,T.AAC001,T.AAB001,T.AAC147,T.AAC003,T.AAC004,T.AAC012,T.AAA027,T.AAC006,T.AAC007,T.AAC055,T.AIC162,T.AIC161,T.AAC020,T.BIC215,T.AAE200,T.AAE210,T.AAC081,T.AAC085,T.AAC064,T.AAC014,T.AAC015,(SELECT SUM(A.AAE019)
                  FROM AC61 A,AA17 B
                 WHERE A.AAA036 = B.AAA036
                   AND A.AAZ257 = T.AAZ257
                   AND B.BAZ057 = 100000
                   AND A.AAE041 <=
                       (CASE WHEN T.AAE210 > 201701 THEN T.AAE210 ELSE 201701 END)
                   AND A.AAE042 >=
                       (CASE WHEN T.AAE210 > 201701 THEN T.AAE210 ELSE 201701 END)) AAE019OLD,decode(t.dqflag,'1',SUM(T.AAE188)) AAE019CE,'0',SUM(T.AAE188)) aae019ycxce
          FROM T_YLZCTZ T
         WHERE T.BIC226 = 1000000000000463
         GROUP BY T.AAZ257,t.dqflag) C

关键点:

decode(t.dqflag,SUM(T.AAE188)) AAE019CE,

group by 语句除了 group by后面跟的项目,其它出现在查询中的项都必须是聚合函数。

去掉 group by 后的 t.dqflag ,

查询变为 sum((case when t.dqflag='1' then 0 else t.aae188 end)) AAE019CE,

当定期时 只对非1 的进行sum

当非定期时 只对非0的进行sum。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读