超难度sql语句
表A
gysbh gysname (gysbh主键)
1 张
2 李
表B
gysbh jhdh (gysbh是表A的外键, jhdh是表B的主键,)
1 2002-01-01
2 2002-01-05
1 2002-01-02
1 2002-01-03
表C
jhdh sl dj (jhdh是表B的外键)
2002-01-01 1 2
2002-01-01 3 5
2002-01-05 1 10
2002-01-02 1 10
2002-01-03 3 10
表D
gysbh ytmoney THDH (gysb的外键,THDH是主键)
1 30 001
2 40 002
最终结果表E是这样的.
gysbh gysname Cmoney
1 张 57-表D.ytmoney(30)
2 李 10-40
解决问题者可得200分, 参与有分。 我再开一贴。 谢谢各位.
问题点数:100、回复次数:4Top
1 楼wangfeixue()回复于 2002-08-26 13:08:46 得分 0
select A.JHDH,A.gysbh,B.money,C.gysname from jhdb A,
(select jhdh,sum(dj*sl+(dj*sl*xl/100)) as money from jhmxb group by jhdh) B,
(Select gysbh, gysname from gysb) C,
(SELECT thdh,sum(tkcyfkmoney) as Thmoney from Thdb group by gysbh,Thdh) D
where (A.jhdh=B.jhdh)
上面是我自己写的。如果在最后面加上一条group by A.gysbh 我的问题就解决了。但是怎么也不能加。
我上面例的数据和我实际的表名不同,大家可以用样例数据,而不要被我的这段代码搞混了Top
2 楼MeXP(秦汉风)回复于 2002-08-26 13:11:36 得分 0
Cmoney是什么字段?Top
3 楼wangfeixue()回复于 2002-08-26 13:13:56 得分 0
cmoney是一个计算字段 as cmomey字段Top
4 楼MeXP(秦汉风)回复于 2002-08-26 14:12:06 得分 100
SELECT A.gysbh, A.gysname, (cast( C.money as varchar(10)) + '-'+cast(D.ytmoney as varchar(10))) AS Cmoney
FROM A INNER JOIN
B ON A.gysbh = B.gysbh INNER JOIN
C ON B.jhdh = C.jhdh INNER JOIN
D ON A.gysbh = D.gysbh
构建出同样数据库,查询分析器中测试通过,money和ytmoney取的是数字型,对于字段类型你自己改改就行了Top




