日期:2014-05-17  浏览次数:20431 次

三个表组合查询显示 求查询SQ语句L
表一:患者信息库【huanzhe】有字段 患者ID,姓名, 住院日期 数据如下

SQL code
HZID   name      ZYDate 
1      张三    2012-10-1
2      张四    2012-10-5
3      王三    2012-10-9
4      李五    2012-10-12
....


表二:治疗信息表【zhiliao】有字段 医生姓名 科室 患者ID 费用1 费用2 数据如下
SQL code

yisheng  keshi   HZID  feiyong1      feiyong2
王医生    脑科    1     100.0000     200.0000
李医生    骨科    1     100.0000     200.0000
张医生    眼科    2     100.0000     200.0000
朱医生    外科    3     100.0000     200.0000
王医生    内科    1     100.0000     200.0000
王医生    皮肤    2     100.0000     200.0000
张医生    口腔    4     100.0000     200.0000
王医生    脑科    4     100.0000     200.0000
陈医生    眼科    2     100.0000     200.0000
王医生    脑科    1     100.0000     200.0000
张医生    眼科    3     100.0000     200.0000
王医生    脑科    3     100.0000     200.0000
......



表三:费用结算表【jiesuan】有字段 患者ID 支付费用 出院日期[默认值是1900-1-1]
SQL code

HZID      ZFMoney         CYDate
1         100.0000      1900-1-1
2         100.0000      1900-1-1
3         100.0000      1900-1-1
4         100.0000      1900-1-1
4         100.0000      1900-1-1
3         100.0000      1900-1-1
2         100.0000      1900-1-1
1         100.0000      1900-1-1
1         100.0000      1900-1-1
2         100.0000      1900-1-1
2         100.0000      2012-10-11
1         100.0000      2012-11-11
......



希望通过SQL查询得到如下结果

以患者分组显示数据字段如下

HZID name ZYDate feiyong1【所有治疗费用1相加】 feiyong2【所有治疗费用2相加】 ZFMoney【所有已结算费用1相加】 Qiankuan【欠款=费用1+费用2=已结算总额】 CYDate【取出院日期字段最大值】 ZLCS【治疗次数为治疗信息表里出现的记录行数量】

SQL code

1      张三    2012-10-1     400.0000           800.0000         400.00      800.00       2012-11-11      4
2      张四    2012-10-5     300.0000           600.0000         400.00      500.00       2012-10-11      3
3      王三    2012-10-9     300.0000           600.0000         200.00      700.00       1900-1-1        3
4      李五    2012-10-12    200.0000           400.0000         200.00      400.00        1900-1-1       2



------解决方案--------------------
SQL code
CREATE TABLE huanzhe (HZID INT,  NAME VARCHAR(10),      ZYDate DATETIME)
 INSERT INTO huanzhe
 SELECT 1,'张三','2012-10-1'
 UNION ALL 
 SELECT 2,'张四','2012-10-5'
 UNION ALL 
 SELECT 3,'王三','2012-10-9'
 UNION ALL 
 SELECT 4,'李五','2012-10-12'
 GO
 
 CREATE TABLE zhiliao(yisheng VARCHAR(10),  keshi VARCHAR(10),   HZID INT ,  feiyong1  decimal(18,2),    feiyong2 decimal(18,2))
 INSERT INTO zhiliao
 select '王医生',  '脑科','1', '100.0000', '200.0000'
 union all select '李医生','骨科','1', '100.0000', '200.0000'
 union all select '张医生','眼科','2', '100.0000', '200.0000'
 union all select '朱医生','外科','3', '100.0000', '200.0000'
 union all select '王医生','内科','1', '100.0000', '200.0000'
 union all select '王医生','皮肤','2', '100.0000', '200.0000'
 union all select '张医生','口腔','4', '100.0000', '200.0000'
 union all select '王医生','脑科','4', '100.0000', '200.0000'
 union all select '陈医生','眼科','2', '100.0000', '200.0000'
 union all select '王医生','脑科','1', '100.0000', '200.0000'
 union all select '张医生','眼科','3', '100.0000', '200.0000'
 union all select '王医生','脑科','3', '100.0000', '200.0000'
 GO
 CREATE TABLE jiesuan(HZID  INT,    ZFMoney  DECIMAL(18,2),       CYDate DATETIME)
 INSERT INTO jiesuan
 select '1',     '100.0000',   '1900-1-1'
 union all select '2',     '100.0000',   '1900-1-1'
 union all select '3',