概述
1.union和union all的区别
如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。
union(或称为联合)的作用是将多个结果合并在一起显示出来。
union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。
Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All:对两个结果集进行并集操作,包括重复行,不进行排序;
Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。
可以在最后一个结果集中指定Order by子句改变排序方式。
2.实例
<select id="queryBy" resultType="com.wonders.qwsm.xinjian.vo.ChildCasualtyCauseVo">
SELECT
CASE WHEN bk.NLDW ='1' AND bk.SZNL=0 THEN '<1岁'
WHEN bk.NLDW ='1' AND bk.SZNL > 0 AND bk.SZNL <![CDATA[ <= ]]> 3 THEN '1-3岁'
WHEN bk.NLDW ='1' AND bk.SZNL >= 4 AND bk.SZNL <![CDATA[ <= ]]> 6 THEN '4-6岁'
WHEN bk.NLDW ='1' AND bk.SZNL >=7 AND bk.SZNL <![CDATA[ <= ]]> 11 THEN '7-11岁'
WHEN bk.NLDW ='1' AND bk.SZNL >=12 AND bk.SZNL <![CDATA[ <= ]]> 15 THEN '12-15岁'
WHEN bk.NLDW ='1' AND bk.SZNL >=16 AND bk.SZNL <![CDATA[ <= ]]> 18 THEN '16-18岁'
ELSE NULL END nld,
BK.GBSYDM,
c.CCD,
c.CCD_TNM,
COUNT(1) count
FROM T_Z_SWBK bk
INNER JOIN TB_CCD c on c.CCD IN ('92','95','96','97','98','99','100','101','102','103','104')
INNER JOIN TB_ICDCCD ic ON IC.CCD = c.CCD and ic.ICD = BK.GBSYDM
WHERE BK.${key} >= TO_DATE('${startDate}', 'SYYYY-MM-DD') and BK.${key} <![CDATA[ <= ]]> TO_DATE('${endDate}', 'SYYYY-MM-DD')
GROUP BY
c.CCD,
CASE WHEN bk.NLDW ='1' AND bk.SZNL=0 THEN '<1岁'
WHEN bk.NLDW ='1' AND bk.SZNL > 0 AND bk.SZNL <![CDATA[ <= ]]> 3 THEN '1-3岁'
WHEN bk.NLDW ='1' AND bk.SZNL >= 4 AND bk.SZNL <![CDATA[ <= ]]> 6 THEN '4-6岁'
WHEN bk.NLDW ='1' AND bk.SZNL >=7 AND bk.SZNL <![CDATA[ <= ]]> 11 THEN '7-11岁'
WHEN bk.NLDW ='1' AND bk.SZNL >=12 AND bk.SZNL <![CDATA[ <= ]]> 15 THEN '12-15岁'
WHEN bk.NLDW ='1' AND bk.SZNL >=16 AND bk.SZNL <![CDATA[ <= ]]> 18 THEN '16-18岁'
ELSE NULL END ,
BK.GBSYDM,
c.CCD_TNM
UNION
SELECT
CASE
WHEN bk.NLDW = '1' AND bk.SZNL >= 0 AND bk.SZNL <![CDATA[ <= ]]> 6 THEN '0-6岁小计'
WHEN bk.NLDW = '1' AND bk.SZNL >= 7 AND bk.SZNL <![CDATA[ <= ]]> 18 THEN '7-18岁小计'
ELSE NULL END nld,
BK.GBSYDM,
c.CCD,
c.CCD_TNM,
COUNT(1) count
FROM T_Z_SWBK bk
INNER JOIN TB_CCD c on c.CCD IN ('92','95','96','97','98','99','100','101','102','103','104')
INNER JOIN TB_ICDCCD ic ON IC.CCD = c.CCD and ic.ICD = BK.GBSYDM
WHERE BK.${key} >= TO_DATE('${startDate}', 'SYYYY-MM-DD') and BK.${key} <![CDATA[ <= ]]> TO_DATE('${endDate}', 'SYYYY-MM-DD')
GROUP BY
c.CCD,
CASE
WHEN bk.NLDW = '1' AND bk.SZNL >= 0 AND bk.SZNL <![CDATA[ <= ]]> 6 THEN '0-6岁小计'
WHEN bk.NLDW = '1' AND bk.SZNL >= 7 AND bk.SZNL <![CDATA[ <= ]]> 18 THEN '7-18岁小计'
ELSE NULL END,
BK.GBSYDM,
c.CCD_TNM
</select>
3.注意
union用法中,两个select语句的字段类型匹配,而且字段个数要相同
最后
以上就是飞快糖豆为你收集整理的oracle查询union用法的全部内容,希望文章能够帮你解决oracle查询union用法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复