重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
select
创新互联服务项目包括宣州网站建设、宣州网站制作、宣州网页制作以及宣州网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,宣州网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到宣州省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
sum(case when t.lb='随迁子女'and t.jieduan='3'and t.hang='8' then t.cyinj+t.cernj+t.csannj+t.csinj else 0 end) 一,
sum(case when t.lb='其中:外省迁入'and t.jieduan='3' and t.hang ='9' then t.cyinj+t.cernj+t.csannj+t.csinj else 0 end) 二,
sum(case when t.lb='总计' and t.jieduan='3' then t.cyinj+t.cernj+t.csannj+t.csinj else 0 end) 三,
sum(case when t.cxlb in ('111','112') and t.jieduan='3' and t.lb='总计' then t.cyinj+t.cernj+t.csannj+t.csinj else 0 end) 四,
sum(case when t.cxlb in ('121','122','123') and t.jieduan='3' and t.lb='总计' then t.cyinj+t.cernj+t.csannj+t.csinj else 0 end) 五,
sum(case when t.cxlb in ('210','220') and t.jieduan='3' and t.lb='总计' then t.cyinj+t.cernj+t.csannj+t.csinj else 0 end) 六
from xsrs t
先试试,有问题继续追问,别名我起的一,二,三……,你可以自己改下别名
需要用wm_concat将各字段连接。
如,test表中有如下数据:
现要将name字段连接,显示在一行,可用如下语句:
select wm_concat(name) from test;
结果:
Oracle一列的多行数据拼成一行显示字符
oracle 提供了两个函数WMSYS.WM_CONCAT 和 ListAgg函数。
先介绍:WMSYS.WM_CONCAT
例:
id name
1 aa
2 bb
3 cc
要的结果是"aa,bb,cc"
select WMSYS.WM_CONCAT(a.name) from user a
这样的话,查询出的结果:"aa,bb,cc"
分隔符如果不需要用英文的逗号,需要改成别的符号比如分号的,可以用下面的方法替换下:
select replace(WMSYS.WM_CONCAT(a.name),',',';') from user a
结果:"aa;bb;cc"
======================================================================
ListAgg函数
listagg函数的语法结构如下:
LISTAGG( [,]) WITHIN GROUP (ORDER BY ) [OVER (PARTITION BY )]
listagg虽然是聚合函数,但可以提供分析功能(比如可选的OVER()子句)。使用listagg中,下列中的元素是必须的:
?需要聚合的列或者表达式
?WITH GROUP 关键词
?分组中的ORDER BY子句
例子:
DEPTNO ENAME
--------- ----------
10 CLARK
10 KING
10 MILLER
20 ADAMS
20 FORD
20 JONES
按照DEPTNO字段分组,对结果集进行字符串聚合,结果如下:
DEPTNO AGGREGATED_ENAMES
--------- -------------------------
10 CLARK,KING,MILLER
20 ADAMS,FORD,JONES
SQL:
SELECT deptno,LISTAGG(ename, ',') WITHIN GROUP (ORDER BY ename) AS employees FROM emp GROUP BY deptno;