• SQL分组取每组前几条记录,剩下的列为其他


    /****** SQLserver 写法  ******/
    SELECT  *
    FROM [lx].[dbo].[全国销售额] where province='北京' --group by  [province],[name] 
    
    --按销售额排序 取每个省的前4名,剩下的为其他
    select * from (
    select a.province,a.name ,a.value from 全国销售额 a where value in (select top 4 value from 全国销售额 where province=a.province order by value desc) 
    union all
    select a.province,'其他',sum(a.value) value from 全国销售额 a where value not in (select top 4 value from 全国销售额 where province=a.province order by value desc) 
    group by a.province
    ) a order by a.province,a.value desc

    --oracle 写法(大于5的列到其他)
    SELECT a.bm,'其他' mdd ,a.jssj,sum(b.jp) jp,sum(b.hc) hc ,sum(b.bzfy) bzfy,sum(b.zsfy) zsfy,sum(b.jtqt) jtqt,sum(b.qt) qt,sum(b.jtgj) jtgj, sum(b.bmj) bmj,sum(b.ygj) ygj ,sum(b.gsj) gsj,sum(b.zjj) zjj,sum(b.ccts) ccts ,sum(b.shje) shje FROM ( SELECT a.bm,a.mdd,a.jssj,jtgj, ROW_NUMBER() OVER(PARTITION BY a.bm,a.jssj ORDER BY jtgj desc) AS RN FROM NSC_OA_CLHZ a ) a left join NSC_OA_CLHZ b on nvl(a.bm,0) = nvl(b.bm,0) and nvl(a.mdd,0) = nvl(b.mdd,0) and nvl(a.jssj,0)=nvl(b.jssj,0) and a.RN >5 group by a.bm,a.jssj

      

  • 相关阅读:
    linux基础练习题(3)
    linux基础练习题(2)
    linux基础练习题(1)
    编辑器 vim
    Linux 命令总结
    Sublime Text 3 快捷键总结(拿走)
    Linux 主要目录速查表
    javaScript中的querySelector()与querySelectorAll()的区别
    javaScript定时器
    js基本类型和字符串的具体应用
  • 原文地址:https://www.cnblogs.com/xiaobaidejiucuoben/p/13274255.html
Copyright © 2020-2023  润新知