Я использую SQL Server 2000. Есть таблица с именем trialbalance_diff
. Структура показана ниже.
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
Чего мне не хватает в сценарии, который вызывает это? Я не могу понять, почему.
Любая помощь будет оценена. Большое спасибо.