我正在使用SQL Server 2000.有一个名为trialbalance_diff
的表。结构如下所示。带有IF ELSE的SQL脚本无法正常工作
accno des month diff
1010011001 Cash in Hand 5 -732230.0
1030033001 Seylan Bank 4 309042.0
1050011001 Lease Debtors 2 9899.0
1050011002 Lease VAT Suspense 5 2240.0
我需要将这些数据重新写入另一个表temp_TB_Diff
。应根据当月插入字段Diff
。与此类似,
acc_code Acc_desc Jan Feb Mar Apr May
1010011001 Cash in Hand -732230.0
1030033001 Seylan Bank 309042.0
1050011001 Lease Debtors 9899.0
1050011002 Lease VAT Suspense 2240.0
我写这个SQL脚本这一点。
DECLARE @month int;
SELECT @month = [month] FROM trialbalance_diff
BEGIN
IF @month = 1
INSERT INTO temp_TB_Diff(acc_code, acc_desc, jan)
SELECT accno, des, diff FROM trialbalance_diff
ELSE IF @month = 2
INSERT INTO temp_TB_Diff(acc_code, acc_desc, Feb)
SELECT accno, des, diff FROM trialbalance_diff
ELSE IF @month = 3
INSERT INTO temp_TB_Diff(acc_code, acc_desc, Mar)
SELECT accno, des, diff FROM trialbalance_diff
ELSE IF @month = 4
INSERT INTO temp_TB_Diff(acc_code, acc_desc, Apr)
SELECT accno, des, diff FROM trialbalance_diff
ELSE IF @month = 5
INSERT INTO temp_TB_Diff(acc_code, acc_desc, May)
SELECT accno, des, diff FROM trialbalance_diff
ELSE IF @month = 6
INSERT INTO temp_TB_Diff(acc_code, acc_desc, June)
SELECT accno, des, diff FROM trialbalance_diff
ELSE IF @month = 7
INSERT INTO temp_TB_Diff(acc_code, acc_desc, July)
SELECT accno, des, diff FROM trialbalance_diff
ELSE IF @month = 8
INSERT INTO temp_TB_Diff(acc_code, acc_desc, Aug)
SELECT accno, des, diff FROM trialbalance_diff
ELSE IF @month = 9
INSERT INTO temp_TB_Diff(acc_code, acc_desc, Sep)
SELECT accno, des, diff FROM trialbalance_diff
ELSE IF @month = 10
INSERT INTO temp_TB_Diff(acc_code, acc_desc, Oct)
SELECT accno, des, diff FROM trialbalance_diff
ELSE IF @month = 11
INSERT INTO temp_TB_Diff(acc_code, acc_desc, Nov)
SELECT accno, des, diff FROM trialbalance_diff
ELSE IF @month = 12
INSERT INTO temp_TB_Diff(acc_code, acc_desc, [Dec])
SELECT accno, des, diff FROM trialbalance_diff
END
它工作除了一个小问题。数据不会插入到特定的月份。应该转到不同月份列的值只能插入到一列中。
它看起来像这样,
acc_code Acc_desc Jan Feb Mar Apr May
1010011001 Cash in Hand -732230.0
1030033001 Seylan Bank 309042.0
1050011001 Lease Debtors 9899.0
1050011002 Lease VAT Suspense 2240.0
我是什么在导致此脚本失踪?我似乎无法弄清楚为什么。
任何帮助,将不胜感激。非常感谢。
删除评论。 – Johan 2012-02-22 11:03:21