高手请进,SQL语句问题 三百分相送(200分)

  • 主题发起人 主题发起人 arron1104
  • 开始时间 开始时间
A

arron1104

Unregistered / Unconfirmed
GUEST, unregistred user!
有两张表:
TABLE1 医生姓名 诊断数量
--------------------------
张三 1
李四 2

TABLE2 医生姓名 审核数量
------------------------
李四 1
王五 2
请问怎么通过SQL将两张表整合成一张如下所示的表:
ResultTable 医生姓名 报告数量 诊断数量 审核数量
---------------------------------------------------------
张三 1 1 0
李四 3 2 1
王五 2 0 2
其中,报告数量=诊断数量+审核数量
 
select table1.医生姓名,报告数量=table1.诊断数量+table2.审核数量,table1.诊断数量,table2.审核数量 from table1,table2 where ……
 
select talbe1.医生姓名,talbe1.诊断数量+talbe2.审核数量 as 报告数量,talbe1.诊断数量,talbe2.审核数量 from talbe1 left outer join table2 on tabl1.医生姓名=table2.医生姓名
 
select t1.医生姓名,t1.诊断数量+t2.审核数量 as 报告数量,t1.诊断数量,t2.审核数量 from t1 join t2 on t1.医生姓名=t2.医生姓名
使用外部连接的全连接,如果用Left就不会有上面的第三条记录
 
SELECT DISTINCT d.醫生姓名, d.Zd + d.Sh 總數量﹐d.Zd 診診斷數量﹐d.Sh 審核數量
FROM (SELECT c.醫生姓名, ISNULL
((SELECT 診斷數量
FROM table1
WHERE table1.醫生姓名 = c.醫生姓名), 0) Zd, ISNULL
((SELECT 審核數量
FROM table2
WHERE table2.醫生姓名 = c.醫生姓名), 0) Sh
FROM (SELECT DISTINCT 醫生姓名
FROM table1
UNION
SELECT DISTINCT 醫生姓名
FROM table2) AS c, table1 AS a, table2 AS b) AS d
測試通過﹐別忘記給分哦
 
SELECT 医生姓名, SUM(审核数量 + 诊断数量) 报告数量,
SUM(诊断数量) 诊断数量 ,SUM(审核数量) 审核数量
FROM (SELECT 医生姓名, 0 AS 审核数量, 诊断数量
FROM TABLE1
UNION
SELECT 医生姓名, 审核数量, 0 AS 诊断数量
FROM TABLE2 ) A
GROUP BY 医生姓名
 
he,这么多分啊?
楼上几位的方法有一个问题,就是得不到张三和王五的,只可得到李四的,如下则应可以:
select A.医生姓名,IsNull(B.诊断数量,0)+IsNull(C.审核数量,0) as 报告数量,IsNull(B.诊断数量,0) as 诊断数量,IsNull(C.审核数量,0) as 审核数量
From (Select distinct 医生姓名 From Table1 union Select distinct 医生姓名 From Table2) as A
left outer join table1 B on A.医生姓名=B.医生姓名
left outer join table2 C on A.医生姓名=C.医生姓名
 
呵呵,同意楼上。
 
insert into ResultTable (医生姓名,诊断数量,审核数量,报告数量)
SELECT TABLE1. 医生姓名, isnull(TABLE1.诊断数量,0) as a, isnull(TABLE2.审核数量,0) as b,
isnull(TABLE1.诊断数量,0)+ isnull(TABLE2.审核数量,0) as count
FROM TABLE1 LEFT OUTER JOIN
TABLE2 ON TABLE1. 医生姓名 = TABLE2. 医生姓名
union
select TABLE2. 医生姓名,TABLE1.诊断数量,TABLE2.审核数量,TABLE2.审核数量+TABLE1.诊断数量 from TABLE2,TABLE1 where TABLE2. 医生姓名 not in (select TABLE1. 医生姓名 from TABLE1)
 
我的語句絕對行得通﹐我試了其它的﹐好象都不行哦[:D][:D][:D]
 
to sunys:
兄弟,hongxinyan的帖子发的晚怎么反而跑上面去了?这是DFW的Bug还是怎么的?
 
这么简单的问题也要出200分,看来DFW的分数贬值了,一点都不爽。
 
lichaogang的方法可以使用!
 
我只同意lichaogang的方法。
 
lichaogang:他首先回答,因为他后来又修改过他的答案了,所以就这样了。
你的那个SQL语句做法也是可以的。
 
哇操怎么罵起我來了啊﹐我只是在測試時改了一下而已啊
絕對不會參考別人的
唉﹐這世界真是不公平啊
 
to sunys
為什么罵我﹐我的語句又跟你的不一樣﹐你認為我是在抄襲你的嗎
真好笑
 
lichaogang问我啊,你看一下前面。
 
来自:sunys, 时间:2003-9-29 16:50:00, ID:2208296
hongxinyan,懒的理你,脸皮够厚。

是什么意思啊[:(!][:(!][:(!][:(!]
 
后退
顶部