SELECT     医疗机构名称=shospitalname, 
人次=count(*), 
总费用= sum(sbczfy), 
自费药=sum(sbfh_medi),
自费项目=sum(sbfh_medi+sbfh_treat+sbfh_qt),
补偿总额= sum(sbc_bcje) ,
平均住院天数=avg(szydays),
平均床日费用=(sum(sbczfy)/count(*))/avg(szydays),
均次费用=sum(sbczfy)/count(*)FROM         NH_InchgBC_List a
inner join(
SELECT     医疗机构名称=shospitalname, 
人次=count(*), 
总费用= sum(sbczfy), 
自费药=sum(sbfh_medi),
自费项目=sum(sbfh_medi+sbfh_treat+sbfh_qt),
补偿总额= sum(sbc_bcje) ,
平均住院天数=avg(szydays),
平均床日费用=(sum(sbczfy)/count(*))/avg(szydays),
均次费用=sum(sbczfy)/count(*)
FROM         NH_InchgBC_List b
where syear = 2011 
and shospitaltype = '定点地市医疗机构'
and dchgdate > '2011-01-01'  and dchgdate < '2011-11-25'
GROUP BY shospitalname)
on a.shospitalname = b.shospitalname
where syear = 2012 
and shospitaltype = '定点地市医疗机构'
and dchgdate > '2012-01-01'  and dchgdate < '2012-11-25'
GROUP BY shospitalname
错误代码:消息 156,级别 15,状态 1,第 27 行
关键字 'on' 附近有语法错误。

解决方案 »

  1.   

    SELECT     医疗机构名称=shospitalname,  
    人次=count(*),  
    总费用= sum(sbczfy),  
    自费药=sum(sbfh_medi), 
    自费项目=sum(sbfh_medi+sbfh_treat+sbfh_qt), 
    补偿总额= sum(sbc_bcje) , 
    平均住院天数=avg(szydays), 
    平均床日费用=(sum(sbczfy)/count(*))/avg(szydays), 
    均次费用=sum(sbczfy)/count(*) 
      
    FROM         NH_InchgBC_List a 
    inner join( 
                SELECT     医疗机构名称=shospitalname,  
                人次=count(*),  
                总费用= sum(sbczfy),  
                自费药=sum(sbfh_medi), 
                自费项目=sum(sbfh_medi+sbfh_treat+sbfh_qt), 
                补偿总额= sum(sbc_bcje) , 
                平均住院天数=avg(szydays), 
                平均床日费用=(sum(sbczfy)/count(*))/avg(szydays), 
                均次费用=sum(sbczfy)/count(*) 
                FROM         NH_InchgBC_List b 
                where syear = 2011  
                and shospitaltype = '定点地市医疗机构'
                and dchgdate > '2011-01-01'  and dchgdate < '2011-11-25'
                GROUP BY shospitalname) b
    on a.shospitalname = b.shospitalname 
    where syear = 2012  
    and shospitaltype = '定点地市医疗机构'
    and dchgdate > '2012-01-01'  and dchgdate < '2012-11-25'
    GROUP BY shospitalname
      

  2.   

    你inner join 那个括号后面还要定义一个别名,不然报错。
      

  3.   

    SELECT     医疗机构名称=shospitalname, 
    人次=count(*), 
    总费用= sum(sbczfy), 
    自费药=sum(sbfh_medi),
    自费项目=sum(sbfh_medi+sbfh_treat+sbfh_qt),
    补偿总额= sum(sbc_bcje) ,
    平均住院天数=avg(szydays),
    平均床日费用=(sum(sbczfy)/count(*))/avg(szydays),
    均次费用=sum(sbczfy)/count(*)
     
    FROM         NH_InchgBC_List a
    inner join(
                SELECT     医疗机构名称=shospitalname, 
                人次=count(*), 
                总费用= sum(sbczfy), 
                自费药=sum(sbfh_medi),
                自费项目=sum(sbfh_medi+sbfh_treat+sbfh_qt),
                补偿总额= sum(sbc_bcje) ,
                平均住院天数=avg(szydays),
                平均床日费用=(sum(sbczfy)/count(*))/avg(szydays),
                均次费用=sum(sbczfy)/count(*)
                FROM         NH_InchgBC_List /*b  別名放錯地方*/
                where syear = 2011 
                and shospitaltype = '定点地市医疗机构'
                and dchgdate > '2011-01-01'  and dchgdate < '2011-11-25'
                GROUP BY shospitalname) As b
    on a.shospitalname = b.shospitalname
    where syear = 2012 
    and shospitaltype = '定点地市医疗机构'
    and dchgdate > '2012-01-01'  and dchgdate < '2012-11-25'
    GROUP BY shospitalname
      

  4.   

    SELECT     医疗机构名称=shospitalname,  
    人次=count(*),  
    总费用= sum(sbczfy),  
    自费药=sum(sbfh_medi), 
    自费项目=sum(sbfh_medi+sbfh_treat+sbfh_qt), 
    补偿总额= sum(sbc_bcje) , 
    平均住院天数=avg(szydays), 
    平均床日费用=(sum(sbczfy)/count(*))/avg(szydays), 
    均次费用=sum(sbczfy)/count(*) 
       
    FROM         NH_InchgBC_List a 
    inner join( 
                SELECT     医疗机构名称=shospitalname,  
                人次=count(*),  
                总费用= sum(sbczfy),  
                自费药=sum(sbfh_medi), 
                自费项目=sum(sbfh_medi+sbfh_treat+sbfh_qt), 
                补偿总额= sum(sbc_bcje) , 
                平均住院天数=avg(szydays), 
                平均床日费用=(sum(sbczfy)/count(*))/avg(szydays), 
                均次费用=sum(sbczfy)/count(*) 
                FROM         NH_InchgBC_List  b
                where syear = 2011  
                and shospitaltype = '定点地市医疗机构'
                and dchgdate > '2011-01-01'  and dchgdate < '2011-11-25'
                GROUP BY shospitalname) b
    on a.shospitalname = b.shospitalname 
    where syear = 2012  
    and shospitaltype = '定点地市医疗机构'
    and dchgdate > '2012-01-01'  and dchgdate < '2012-11-25'
    GROUP BY shospitalname提示错误:
    消息 207,级别 16,状态 1,第 27 行
    列名 'shospitalname' 无效。
    我的字段是存在的,没有错
      

  5.   


    SELECT     医疗机构名称=shospitalname, 
    人次=count(*), 
    总费用= sum(sbczfy), 
    自费药=sum(sbfh_medi),
    自费项目=sum(sbfh_medi+sbfh_treat+sbfh_qt),
    补偿总额= sum(sbc_bcje) ,
    平均住院天数=avg(szydays),
    平均床日费用=(sum(sbczfy)/count(*))/avg(szydays),
    均次费用=sum(sbczfy)/count(*)
     
    FROM         NH_InchgBC_List a
    inner join(
                SELECT     医疗机构名称=shospitalname,   -- 已定義別名
                人次=count(*), 
                总费用= sum(sbczfy), 
                自费药=sum(sbfh_medi),
                自费项目=sum(sbfh_medi+sbfh_treat+sbfh_qt),
                补偿总额= sum(sbc_bcje) ,
                平均住院天数=avg(szydays),
                平均床日费用=(sum(sbczfy)/count(*))/avg(szydays),
                均次费用=sum(sbczfy)/count(*)
                FROM         NH_InchgBC_List /*b  別名放錯地方*/
                where syear = 2011 
                and shospitaltype = '定点地市医疗机构'
                and dchgdate > '2011-01-01'  and dchgdate < '2011-11-25'
                GROUP BY shospitalname) As b
    on a.shospitalname = b.医疗机构名称  -- 在Inner Join 里已定義別名
    where syear = 2012 
    and shospitaltype = '定点地市医疗机构'
    and dchgdate > '2012-01-01'  and dchgdate < '2012-11-25'
    GROUP BY shospitalname