Я использую SQL Server 2000. Существует таблица с именем trialbalance_diff
. Структура показана ниже.SQL-скрипт с IF ELSE не работает должным образом
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