以前看过类似的帖子,现在我还是不会写这样的SQL,请知情者赐教!(100分)

  • 主题发起人 主题发起人 tbp99
  • 开始时间 开始时间
T

tbp99

Unregistered / Unconfirmed
GUEST, unregistred user!
表1
科室编码 费用名称 金额
1 手术费 120
1 检查费 80
2 药费 230
2 B超费 180
... .... ...
. . .
. . .
... .... ...
表2
科室编码 科室名称
1 外科
2 内科
... .....
. .
. .
N 放射科

要求输出表3
科室名称 手术费 检查费 药费 B超 .......
外科 120 80 0 0 ......
内科 0 0 230 180 ......
.... ... ... ... ... ......

请兄弟姐妹支持,不胜感激
 
没人关注我自己UP,我对天空大叫,神啊,救救我吧
 
select c.科室名称,手术费=sum(case 费用名称 when '手术费' then 金额 end),
检查费=sum(case 费用名称 when '检查费' then 金额 end),
......
from (select a2.科室名称,a1.费用名称,a1.金额 from 表1 a1,表2 a2
where a1.科室编号=a2.科室编号 group by a2.科室名称) c
 
to xzh2000:谢谢您的关注,sorry,我还有一点没讲清楚,那就是表1中的费用
名称不是固定的,因为表1是临时表,好比说B超费有时有,有时又没有,其它费用名称也
类似。科室对应的费用名称也不固定。还请xzh2000继续关注,不胜感激!!!
 
这是交叉表,光用一句SQL是无法实现的,必须通过存储过程,依靠临时表。。。。

VFP到是提供了这样的功能。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部