这个SQL语句如何写?求教!

sj_friend 2003-04-01 07:22:09
我有如下SQL:但有语法错误
update zy_服务费用
set 用量=@num*r.收费数量,
from
(
select 诊疗项目ID,收费数量,收费细目ID from BASE_诊疗费用关系 where 诊疗项目ID=@diagnosis_id
) as r
on r.收费细目ID=zy_服务费用.项目ID
where 病人住院ID=@inpatient_id and 处方号=@CFH and 诊疗ID=@diagnosis_id and 登记时间=@djsj

我需要更新表“zy_服务费用”的字段:“用量”
但需要更新的值需要乘上表“zy_服务费用.项目ID 与 表BASE_诊疗费用关系.收费细目ID关联后对应表“BASE_诊疗费用关系”的“收费数量”字段
请问如何写这类的语句?
...全文
7 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
pengdali 2003-04-01
它和:

update zy_服务费用
set 用量=@num*r.收费数量,
from
(
select 诊疗项目ID,收费数量,收费细目ID from BASE_诊疗费用关系 where 诊疗项目ID=@diagnosis_id
) as r join zy_服务费用
on r.收费细目ID=zy_服务费用.项目ID
where 病人住院ID=@inpatient_id and 处方号=@CFH and 诊疗ID=@diagnosis_id and 登记时间=@djsj

是一样的,如果你要写join就按上面这么写
回复
sj_friend 2003-04-01
但是语句:“select 诊疗项目ID,收费数量,收费细目ID from BASE_诊疗费用关系 where 诊疗项目”会查询出数目大于一的结果集合,把限制条件写在where中照样回出错。
回复
pengdali 2003-04-01
update zy_服务费用
set 用量=@num*r.收费数量,
from
(
select 诊疗项目ID,收费数量,收费细目ID from BASE_诊疗费用关系 where 诊疗项目ID=@diagnosis_id
) as r
where r.收费细目ID=zy_服务费用.项目ID,病人住院ID=@inpatient_id and 处方号=@CFH and 诊疗ID=@diagnosis_id and 登记时间=@djsj
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2003-04-01 07:22
社区公告
暂无公告