我现在在做一个门诊划价的小系统,但我不知道如何实现划价,请高手帮忙
我现在又一张处方表 
处方号  处方类型 病人Id  收费项目1   数量1  收费项目2  数量2…… 收费项目4 数量4药品表
药品Id  药品名称 药品价格……
  化验项目表
项目ID 项目名称 项目价格
我现在的处方表中,当处方类型是药品时,收费项目就是药品Id,但处方类型是化验时,收费项目就是化验项目Id,但我不知道这些怎么才能用SQL语句实现,请高手帮忙  

解决方案 »

  1.   

    dd_药品表(药品Id  药品名称 药品价格..)
    dd_化验项目表(项目ID 项目名称 项目价格..)
    bo_病人(病人Id..)
    bo_处方(处方号  处方类型 病人Id..)
    bo_处方条目(条目id,处方号,
      类型, -- 药品或化验
      ddid, -- 药品id或化验项目id
      数量
      )
      

  2.   

    select sum(a.数量 * isnull(d1.药品价格,d2.项目价格))
    from bo_处方条目 a
    left join dd_药品表 d1 on a.类型='药品' and a.ddid=d1.药品Id
    left join dd_化验项目表 d2 on a.类型='化验' and a.ddid=d2.项目ID
    where a.处方号=@处方号
      

  3.   

    select 
      name = isnull(药品名称,项目名称),
      价格 = a.数量 * isnull(d1.药品价格,d2.项目价格)
    from bo_处方条目 a
    left join dd_药品表 d1 on a.类型='药品' and a.ddid=d1.药品Id
    left join dd_化验项目表 d2 on a.类型='化验' and a.ddid=d2.项目ID
    where a.处方号=@处方号