我是靠谱客的博主 飞快糖豆,最近开发中收集的这篇文章主要介绍oracle查询union用法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 '&lt;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 '&lt;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用法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部