PROC集计算

--proc_xnh_mzbzjdbb '2014','*'

CREATE PROC proc_xnh_mzbzjdbb
    (
      @nf VARCHAR(4) ,
      @yf VARCHAR(2)
    )
AS 
    IF NULLIF('*', @yf) IS NOT NULL 
        BEGIN
-- 1  直接可用字段 次均门诊费用(jmzfy),次均门诊可报费用(jmzkbfy),
--门诊补助金额占门诊费用比例(bzzjebl),次均补助金额(jbzje),
--处理字段 补助金额 (补助金额占旗县区门诊总补助金额比例)
-- group by B.XZQBH 行政区,A.JGJB 机构级别 均门诊费用 均门诊可报费用 补助金额占总金额比例 均补助金额 补助金额
            SELECT  ISNULL(A.JGJB, '0') AS JGJB ,
                    B.XZQBH ,
                    SUM(MZZJE) / COUNT(XZQBH) AS JMZFY ,
                    SUM(KBCJE) / COUNT(XZQBH) AS JMZKBFY ,
                    SUM(SJBCJE) / SUM(MZZJE) BZZJEBL ,
                    SUM(SJBCJE) / COUNT(XZQBH) AS JBZJE ,
                    SUM(SJBCJE) AS BZJE
            FROM    ( SELECT    A.ZYJGBH ,
                                A.YLGMC ,
                                A.XZQBH
                      FROM      SKJBXX_XZQ B
                                LEFT JOIN NHXX_YLJG A ON ( SUBSTRING(a.XZQBH,
                                                              1, 4) = b.GJBH )
                      WHERE     B.GJBH LIKE '1508__'
                                OR B.GJBH = '1508'
                    ) AS B
                    LEFT JOIN NHXX_MZFYXX A ON A.MZJG = B.ZYJGBH
            WHERE   DATEPART(year, MZRQ) = @nf
                    AND DATEPART(MONTH, MZRQ) = @yf
            GROUP BY B.XZQBH ,
                    A.JGJB
            ORDER BY B.XZQBH ASC
			
--  2 行政区划分 总的补助金额	(与上结果集1处理)
            SELECT  B.XZQBH ,
                    SUM(SJBCJE) AS ZSJBZJE
            FROM    ( SELECT    A.ZYJGBH ,
                                A.YLGMC ,
                                A.XZQBH
                      FROM      SKJBXX_XZQ B
                                LEFT JOIN NHXX_YLJG A ON ( SUBSTRING(a.XZQBH,
                                                              1, 4) = b.GJBH )
                      WHERE     B.GJBH LIKE '1508__'
                                OR B.GJBH = '1508'
                    ) AS B
                    LEFT JOIN NHXX_MZFYXX A ON A.MZJG = B.ZYJGBH
            WHERE   DATEPART(year, MZRQ) = @nf
                    AND DATEPART(MONTH, MZRQ) = @yf
                    AND A.SJBCJE IS NOT NULL
                    AND a.SJBCJE > 0
            GROUP BY B.XZQBH
            ORDER BY B.XZQBH ASC
			
--  3 行政区机构级别划分 补助人数	
            SELECT  a.JGJB ,
                    B.XZQBH ,
                    COUNT(DISTINCT RYBH) AS RS
            FROM    ( SELECT    A.ZYJGBH ,
                                A.YLGMC ,
                                A.XZQBH
                      FROM      SKJBXX_XZQ B
                                LEFT JOIN NHXX_YLJG A ON ( SUBSTRING(a.XZQBH,
                                                              1, 4) = b.GJBH )
                      WHERE     B.GJBH LIKE '1508__'
                                OR B.GJBH = '1508'
                    ) AS B
                    LEFT JOIN NHXX_MZFYXX A ON A.MZJG = B.ZYJGBH
            WHERE   DATEPART(year, MZRQ) = @nf
                    AND DATEPART(MONTH, MZRQ) = @yf
                    AND A.SJBCJE IS NOT NULL
                    AND a.SJBCJE > 0
            GROUP BY B.XZQBH ,
                    a.JGJB
            ORDER BY B.XZQBH ASC
					
-- 4  行政区划分 补助人数	(结果集3 和 4进行运算 得出 补助人数占旗县区总补助人数)
            SELECT  B.XZQBH ,
                    COUNT(DISTINCT RYBH) AS RS
            FROM    ( SELECT    A.ZYJGBH ,
                                A.YLGMC ,
                                A.XZQBH
                      FROM      SKJBXX_XZQ B
                                LEFT JOIN NHXX_YLJG A ON ( SUBSTRING(a.XZQBH,
                                                              1, 4) = b.GJBH )
                      WHERE     B.GJBH LIKE '1508__'
                                OR B.GJBH = '1508'
                    ) AS B
                    LEFT JOIN NHXX_MZFYXX A ON A.MZJG = B.ZYJGBH
            WHERE   DATEPART(year, MZRQ) = @nf
                    AND DATEPART(MONTH, MZRQ) = @yf
                    AND A.SJBCJE IS NOT NULL
                    AND a.SJBCJE > 0
            GROUP BY B.XZQBH
            ORDER BY B.XZQBH ASC
			
			
--  5 行政区  --合计数据
--直接可用字段 次均门诊费用(jmzfy),次均门诊可报费用(jmzkbfy),
--门诊补助金额占门诊费用比例(bzzjebl),次均补助金额(jbzje),
            SELECT  B.XZQBH ,
                    SUM(MZZJE) / COUNT(XZQBH) AS JMZFY ,
                    SUM(KBCJE) / COUNT(XZQBH) AS JMZKBFY ,
                    SUM(SJBCJE) / SUM(MZZJE) BZZJEBL ,
                    SUM(SJBCJE) / COUNT(XZQBH) AS JBZJE
            FROM    ( SELECT    A.ZYJGBH ,
                                A.YLGMC ,
                                A.XZQBH
                      FROM      SKJBXX_XZQ B
                                LEFT JOIN NHXX_YLJG A ON ( SUBSTRING(a.XZQBH,
                                                              1, 4) = b.GJBH )
                      WHERE     B.GJBH LIKE '1508__'
                                OR B.GJBH = '1508'
                    ) AS B
                    LEFT JOIN NHXX_MZFYXX A ON A.MZJG = B.ZYJGBH
            WHERE   DATEPART(year, MZRQ) = @nf
                    AND DATEPART(MONTH, MZRQ) = @yf
            GROUP BY B.XZQBH
            ORDER BY B.XZQBH ASC
			
-- 6 根据gjbh(国家编号)来group by 得出不同行政区的参合总人数
--集4/集6 旗县区补助人数占参合人数比例
            SELECT  XZQBH ,
                    COUNT(XZQBH) CHRS
            FROM    dbo.NHXX_CHCYXX a
                    LEFT JOIN dbo.NHXX_CHJTXX b ON a.JTBH = b.JTBH
            GROUP BY XZQBH

--	7 国家编号 与 行政区名称对照字典		
            SELECT  GJBH ,
                    XZQMC
            FROM    SKJBXX_XZQ
            WHERE   GJBH LIKE '1508__'
                    OR GJBH = '1508'
            ORDER BY GJBH ASC
        END
--月份为‘*’查询累计数据
    ELSE 
        BEGIN 
-- 1  直接可用字段 次均门诊费用(jmzfy),次均门诊可报费用(jmzkbfy),
--门诊补助金额占门诊费用比例(bzzjebl),次均补助金额(jbzje),
--处理字段 补助金额 (补助金额占旗县区门诊总补助金额比例)
-- group by B.XZQBH 行政区,A.JGJB 机构级别 均门诊费用 均门诊可报费用 补助金额占总金额比例 均补助金额 补助金额
            SELECT  ISNULL(A.JGJB, '0') AS JGJB ,
                    B.XZQBH ,
                    SUM(MZZJE) / COUNT(XZQBH) AS JMZFY ,
                    SUM(KBCJE) / COUNT(XZQBH) AS JMZKBFY ,
                    SUM(SJBCJE) / SUM(MZZJE) BZZJEBL ,
                    SUM(SJBCJE) / COUNT(XZQBH) AS JBZJE ,
                    SUM(SJBCJE) AS BZJE
            FROM    ( SELECT    A.ZYJGBH ,
                                A.YLGMC ,
                                A.XZQBH
                      FROM      SKJBXX_XZQ B
                                LEFT JOIN NHXX_YLJG A ON ( SUBSTRING(a.XZQBH,
                                                              1, 4) = b.GJBH )
                      WHERE     B.GJBH LIKE '1508__'
                                OR B.GJBH = '1508'
                    ) AS B
                    LEFT JOIN NHXX_MZFYXX A ON A.MZJG = B.ZYJGBH
            WHERE   DATEPART(year, MZRQ) = @nf
            GROUP BY B.XZQBH ,
                    A.JGJB
            ORDER BY B.XZQBH ASC
			
--  2 行政区划分 总的补助金额	(与上结果集1处理)
            SELECT  B.XZQBH ,
                    SUM(SJBCJE) AS ZSJBZJE
            FROM    ( SELECT    A.ZYJGBH ,
                                A.YLGMC ,
                                A.XZQBH
                      FROM      SKJBXX_XZQ B
                                LEFT JOIN NHXX_YLJG A ON ( SUBSTRING(a.XZQBH,
                                                              1, 4) = b.GJBH )
                      WHERE     B.GJBH LIKE '1508__'
                                OR B.GJBH = '1508'
                    ) AS B
                    LEFT JOIN NHXX_MZFYXX A ON A.MZJG = B.ZYJGBH
            WHERE   DATEPART(year, MZRQ) = @nf
                    AND A.SJBCJE IS NOT NULL
                    AND a.SJBCJE > 0
            GROUP BY B.XZQBH
            ORDER BY B.XZQBH ASC
			
--  3 行政区机构级别划分 补助人数	
            SELECT  a.JGJB ,
                    B.XZQBH ,
                    COUNT(DISTINCT RYBH) AS RS
            FROM    ( SELECT    A.ZYJGBH ,
                                A.YLGMC ,
                                A.XZQBH
                      FROM      SKJBXX_XZQ B
                                LEFT JOIN NHXX_YLJG A ON ( SUBSTRING(a.XZQBH,
                                                              1, 4) = b.GJBH )
                      WHERE     B.GJBH LIKE '1508__'
                                OR B.GJBH = '1508'
                    ) AS B
                    LEFT JOIN NHXX_MZFYXX A ON A.MZJG = B.ZYJGBH
            WHERE   DATEPART(year, MZRQ) = @nf
                    AND A.SJBCJE IS NOT NULL
                    AND a.SJBCJE > 0
            GROUP BY B.XZQBH ,
                    a.JGJB
            ORDER BY B.XZQBH ASC
					
-- 4  行政区划分 补助人数	(结果集3 和 4进行运算 得出 补助人数占旗县区总补助人数)
            SELECT  B.XZQBH ,
                    COUNT(DISTINCT RYBH) AS RS
            FROM    ( SELECT    A.ZYJGBH ,
                                A.YLGMC ,
                                A.XZQBH
                      FROM      SKJBXX_XZQ B
                                LEFT JOIN NHXX_YLJG A ON ( SUBSTRING(a.XZQBH,
                                                              1, 4) = b.GJBH )
                      WHERE     B.GJBH LIKE '1508__'
                                OR B.GJBH = '1508'
                    ) AS B
                    LEFT JOIN NHXX_MZFYXX A ON A.MZJG = B.ZYJGBH
            WHERE   DATEPART(year, MZRQ) = @nf
                    AND A.SJBCJE IS NOT NULL
                    AND a.SJBCJE > 0
            GROUP BY B.XZQBH
            ORDER BY B.XZQBH ASC
			
			
--  5 行政区  --合计数据
--直接可用字段 次均门诊费用(jmzfy),次均门诊可报费用(jmzkbfy),
--门诊补助金额占门诊费用比例(bzzjebl),次均补助金额(jbzje),
            SELECT  B.XZQBH ,
                    SUM(MZZJE) / COUNT(XZQBH) AS JMZFY ,
                    SUM(KBCJE) / COUNT(XZQBH) AS JMZKBFY ,
                    SUM(SJBCJE) / SUM(MZZJE) BZZJEBL ,
                    SUM(SJBCJE) / COUNT(XZQBH) AS JBZJE
            FROM    ( SELECT    A.ZYJGBH ,
                                A.YLGMC ,
                                A.XZQBH
                      FROM      SKJBXX_XZQ B
                                LEFT JOIN NHXX_YLJG A ON ( SUBSTRING(a.XZQBH,
                                                              1, 4) = b.GJBH )
                      WHERE     B.GJBH LIKE '1508__'
                                OR B.GJBH = '1508'
                    ) AS B
                    LEFT JOIN NHXX_MZFYXX A ON A.MZJG = B.ZYJGBH
            WHERE   DATEPART(year, MZRQ) = @nf
            GROUP BY B.XZQBH
            ORDER BY B.XZQBH ASC
			
-- 6 根据gjbh(国家编号)来group by 得出不同行政区的参合总人数
--集4/集6 旗县区补助人数占参合人数比例
            SELECT  XZQBH ,
                    COUNT(XZQBH) CHRS
            FROM    dbo.NHXX_CHCYXX a
                    LEFT JOIN dbo.NHXX_CHJTXX b ON a.JTBH = b.JTBH
            GROUP BY XZQBH

--	7 国家编号 与 行政区名称对照字典		
            SELECT  GJBH ,
                    XZQMC
            FROM    SKJBXX_XZQ
            WHERE   GJBH LIKE '1508__'
                    OR GJBH = '1508'
            ORDER BY GJBH ASC
        END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值