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 行受影响)
*/