费用表 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 外科 床位
…………………
…………………
另,能不能对以上这两种分组,合并到一个表中? (某个医师只属于一个科室)
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 外科 床位
…………………
…………………
另,能不能对以上这两种分组,合并到一个表中? (某个医师只属于一个科室)
union all
select RQ,KDKS,SFLB,sum(SJFY) 类别汇总金额 from SFD group by RQ,KDKS,SFLB
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
1、必须是按日分类别汇总(费用表 SFD 的 RQ 列是 Datatime 类型),你的代码是按日间汇总的
2、要求生成表的日期列的形式是: 2009-03-01
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日期转化一下即可.
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
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
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