费用表 SFD 有以下各列: LSH  流水号(主键) 
SFLB  费用类别        (类别有 西药 成药 草药 检查 等) 
SJFY  费用金额 
RQ    日期 
KZYS  医师 
KDKS  科室 由于 每天费用记录太多,查询太消耗时间,现在希望生成如下表,按日期分组汇总 
1、按 医师分组分类别表 SFD_YSLB:     表中的医师,只统计当日在费用表 SFD 的 KZYS 列中出现的医师 日      期    医师  费用类别  类别汇总金额 
2009-03-01  张三    西药
2009-03-01  张三    成药
2009-03-01  张三    草药 
    ……………… 
2009-03-01  李四    西药
2009-03-02  李四    查检
2009-03-02  李四    治疗
    …………………     ………………… 2、按 科室分组分类别表 SFD_KSLB:     表中的科室,只统计当日在费用表 SFD 的 KDKS 列中出现的科室 日      期    科室   费用类别 类别汇总金额 
2009-03-01  内科     西药
2009-03-01  内科     成药
2009-03-01  内科     草药
    ……………… 
2009-03-02  外科     西药
2009-03-02  外科     成药
2009-03-02  外科     床位
    ………………… 
    ………………… 
另,能不能对以上这两种分组,合并到一个表中?  (某个医师只属于一个科室)

解决方案 »

  1.   

    select RQ,KZYS,SFLB,sum(SJFY) 类别汇总金额 from SFD group by  RQ,KZYS,SFLB
    union all
    select RQ,KDKS,SFLB,sum(SJFY) 类别汇总金额 from SFD group by  RQ,KDKS,SFLB
      

  2.   

    --这个帮你做过。
    select RQ 日期,KZYS 医师,SFLB 费用类别,sum(SJFY) 类别汇总金额 from SFD group by  RQ,KZYS,SFLB
    union all
    select RQ,KDKS,SFLB,sum(SJFY) 类别汇总金额 from SFD group by  RQ,KDKS,SFLB
      

  3.   

    回 2 楼:
    1、必须是按日分类别汇总(费用表 SFD 的 RQ 列是 Datatime 类型),你的代码是按日间汇总的
    2、要求生成表的日期列的形式是: 2009-03-01 
      

  4.   


    select convert(varchar(10),RQ,120) 日期,KZYS 医师,SFLB 费用类别,sum(SJFY) 类别汇总金额 from SFD group by   convert(varchar(10),RQ,120) ,KZYS,SFLB
    union all
    select convert(varchar(10),RQ,120) ,KDKS,SFLB,sum(SJFY) 类别汇总金额 from SFD group by convert(varchar(10),RQ,120) ,KDKS,SFLB日期转化一下即可.
      

  5.   

    select convert(varchar(10),RQ,120) 日期,KZYS 医师,SFLB 费用类别,sum(SJFY) 类别汇总金额 from SFD group by  convert(varchar(10),RQ,120),KZYS,SFLB
    union all
    select convert(varchar(10),RQ,120),KDKS,SFLB,sum(SJFY) 类别汇总金额 from SFD group by  convert(varchar(10),RQ,120),KDKS,SFLB--日期转换参数
    select CONVERT(varchar,getdate(),120)
    --2009-03-15 15:10:02select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
    --20090315151201select CONVERT(varchar(12) , getdate(), 111)
    --2009/03/15select CONVERT(varchar(12) , getdate(), 112)
    --20090315select CONVERT(varchar(12) , getdate(), 102)
    --2009.03.15select CONVERT(varchar(12) , getdate(), 108)
    --15:13:26
      

  6.   

    select convert(varchar(10),RQ,120) 日期,KZYS 医师,SFLB 费用类别,sum(SJFY) 类别汇总金额 from SFD group by  convert(varchar(10),RQ,120),KZYS,SFLB
    union all
    select convert(varchar(10),RQ,120),KDKS,SFLB,sum(SJFY) 类别汇总金额 from SFD group by  convert(varchar(10),RQ,120),KDKS,SFLB--日期转换参数
    select CONVERT(varchar,getdate(),120)
    --2009-03-15 15:10:02select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
    --20090315151201select CONVERT(varchar(12) , getdate(), 111)
    --2009/03/15select CONVERT(varchar(12) , getdate(), 112)
    --20090315select CONVERT(varchar(12) , getdate(), 102)
    --2009.03.15select CONVERT(varchar(12) , getdate(), 108)
    --15:13:26
      

  7.   


    select convert(varchar(10),RQ,120) 日期,KZYS 医师,SFLB 费用类别,sum(SJFY) 类别汇总金额 
    from SFD 
    group by  convert(varchar(10),RQ,120),KZYS,SFLB
    union all
    select convert(varchar(10),RQ,120),KDKS,SFLB,sum(SJFY) 类别汇总金额 
    from SFD 
    group by  convert(varchar(10),RQ,120),KDKS,SFLB