读书人

SQL 疑难有关问题(求SQL语句)

发布时间: 2012-12-17 09:31:40 作者: rapoo

SQL 疑难问题(求SQL语句)

我现在有两张表


表一:

ACCOUNTNUMFROMACCOUNTTOACCOUNT
108999 102100 108920
140599 110100 140510
140699 102100 140510
204799 204100 204700
……

这里第一个字段表示是汇总科目,这个科目的值由:Fromaccount 至 toaccount 里面的科目相加的。
比如:第一行的108999 就表示科目值等于:102100 ~ 108920 这个中间的科目(102100,102101……108920)科目的值相加。


表二:

ACCOUNTNUMDEBITMSTCREDITMST
102100 0 -179
102101 0 -208
102102 956800 0
102103 0 -425
102104 0 -148
108920 0 -25
110100 200 0
102100 500 0
204100 300 0
140510 200 0

这里就是明细.



现在我想得出:(怎么写SQL语句,能等到下列这个表呀)
ACCOUNTNUM DEBITMST CREDITMST
108999 102100至108920 表二的DEBITMST汇总 102100g至108920 表二的CREDITMST汇总
140599 110100至140510表二的DEBITMST汇总 110100至140510 表二的CREDITMST汇总
140699 102100至140510表二的DEBITMST汇总 102100至140510 表二的CREDITMST汇总
……

[最优解释]

--CREATE TABLE table1 (ACCOUNTNUM INT ,FROMACCOUNT INT ,TOACCOUNT INT )
--INSERT INTO table1
--SELECT 108999, 102100, 108920
--UNION ALL
--SELECT 140599, 110100, 140510
--UNION ALL
--SELECT 140699, 102100, 140510
--UNION ALL
--SELECT 204799, 204100, 204700


--CREATE TABLE table2 (ACCOUNTNUM INT ,DEBITMSTINT ,CREDITMST INT )
--INSERT INTO table2
--SELECT 102100, 0 , -179


--UNION ALL SELECT 102101, 0 , -208
--UNION ALL SELECT 102102, 956800 , 0
--UNION ALL SELECT 102103, 0 , -425
--UNION ALL SELECT 102104, 0 , -148
--UNION ALL SELECT 108920, 0 , -25
--UNION ALL SELECT 110100, 200 ,0
--UNION ALL SELECT 102100, 500 , 0
--UNION ALL SELECT 204100, 300 , 0
--UNION ALL SELECT 140510, 200 , 0

SELECT a.accountnum,SUM(b.DEBITMST)DEBITMST,SUM(b.CREDITMST)CREDITMST
FROM table1 a INNER JOIN table2 b ON b.ACCOUNTNUM BETWEEN a.FROMACCOUNT AND a.TOACCOUNT
GROUP BY a.accountnum

/*
accountnum DEBITMST CREDITMST
----------- ----------- -----------
108999 957300 -985
140599 400 0
140699 957700 -985
204799 300 0

(4 行受影响)

*/


[其他解释]
select a.ACCOUNTNUM,(select sum(DEBITMST) from 表2 b where b.ACCOUNTNUM<=a.ACCOUNTNUM and b.ACCOUNTNUM>=a.FROMACCOUNT) DEBITMST,(select sum(CREDITMST) from 表2 c where c.ACCOUNTNUM<=a.ACCOUNTNUM and c.ACCOUNTNUM>=a.FROMACCOUNT) DEBITMST from 表1 as a
[其他解释]
非常感谢hjywyj

正在研究中。
[其他解释]
非常感谢 DBA_Huangzj ,问题解决了。

结贴给分。太感谢二位回复我的问题。

读书人网 >SQL Server

热点推荐