求一SQL语句,高手看过来,急用,谢谢了~(100分)

  • 主题发起人 主题发起人 文生
  • 开始时间 开始时间

文生

Unregistered / Unconfirmed
GUEST, unregistred user!
1、表结构:
CREATE TABLE 基础资料表
( BH VARCHAR(2) NOT NULL, --编号
MC VARCHAR(20), --名称
JG MONEY, --价格
);

CREATE TABLE 门诊挂号
( BH VARCHAR(2) NOT NULL,--编号
XRQ datetime, --日期
MC VARCHAR(20), --名称
LX VARCHAR(2), --挂号类型
GHF MONEY, --挂号费
ZLF MONEY, --诊疗费
BLF MONEY, --病历费
ZJE MONEY, --总金额
);

2、数据:(基础资料表)
BH MC JG
01 病历工本费 0 (名称固定不变,价格可以变)
02 诊疗费 6 (名称固定不变,价格可以变)
03 普通挂号 1
04 急诊挂号 0
05 专家挂号 50

(如果表“门诊挂号”中的“BLF”(病历工本费)的和为 0 时,生成如下视图)
数据:(门诊挂号)
BH XRQ MC LX GHF ZLF BLF ZJE
1 20056-05-01 苛1 03 1 6 0 7
2 20056-05-01 苛2 04 0 6 0 6
3 20056-05-01 苛3 04 0 6 0 6
4 20056-05-01 苛4 05 50 6 0 56
5 20056-05-01 苛5 04 0 6 0 6
6 20056-05-01 苛6 03 1 6 0 7

3、想要生成这样的:
挂号类型 挂号名称 合计
03 普通挂号 2.00
04 急诊挂号 0.00
05 专家挂号 50.00
02 诊疗费 36.00

(如果表“门诊挂号”中的“BLF”(病历工本费)的和 不 为 0 时,生成如下视图)
数据:
BH XRQ MC LX GHF ZLF BLF ZJE
1 20056-05-01 苛1 03 1 6 0 7
2 20056-05-01 苛2 04 0 6 0 6
3 20056-05-01 苛3 04 0 6 0 6
4 20056-05-01 苛4 05 50 6 0 56
5 20056-05-01 苛5 04 0 6 1 6
6 20056-05-01 苛6 03 1 6 0 7

想要生成这样的::(按某个日期内)
挂号类型 挂号名称 合计
03 普通挂号 2.00
04 急诊挂号 0.00
05 专家挂号 50.00
01 病历工本费 1.00
02 诊疗费 36.00
 
这么长的代码,帮不了你哦,
 
太长了,帮顶
 
我只是为了说一更详细一些,可以分层次看
 
[red]from 门诊挂号 a,基础资料表 b[/red] 的后面要有 where a.什么 = b.什么
 
我用下面这条语句:
select distinct a.LX as '挂号类型',
select MC from 基础资料表 where
BH=a.XLX ) as '挂号名称',
isnull((select sum(GHF) from MZGL_门诊挂号 where
XGHLX=a.LX),0) as '合计'
from 门诊挂号 a,基础资料表 b

只能生成这样的:
挂号类型 挂号名称 合计
03 普通挂号 2.00
04 急诊挂号 0.00
05 专家挂号 50.00


可是在下面加不上:
01 病历工本费 1.00
02 诊疗费 36.00
 
SELECT *
FROM dbo.基础资料表 a
WHERE (bh IN
(SELECT DISTINCT LX as bh
FROM dbo.门诊挂号
WHERE (XRQ >= '2005-5-1') AND (XRQ <= '2005-5-1')
union select bh='01' from 门诊挂号 where (XRQ >= '2005-5-1') AND (XRQ <= '2005-5-1') and blf=1 )) UNION
SELECT *
FROM 基础资料表
WHERE bh = '02'


日期可以自己输入 弄成存储过程好了
自己定义参数
 
你忘了使用UNION 连接
 
挂号名称下面是同级的
挂号名称
03 普通挂号 2.00
04 急诊挂号 0.00
05 专家挂号 50.00
01 病历工本费 1.00
02 诊疗费 36.00
 
什么意思 没明白 你要的效果不是达到了吗
 
多人接受答案了。
 
后退
顶部