У меня есть данные в таблице базы данных Toad SQL. Допустим, имя таблицы - tblSample.
ID NAME COVERMONTH EFFECTIVEDATE TERMDATE PAIDAMOUNT EARNEDAMOUNT
1546871 SAMPLE1 202001 1-Aug-14 31-Dec-99 5122.12 5111.02
1065418 SAMPLE2 202001 1-Jan-15 31-Dec-99 0 0
1546871 SAMPLE1 202002 1-Aug-14 31-Dec-99 5122.12 5111.02
1065418 SAMPLE2 202002 1-Jan-15 31-Dec-99 3211.21 3211.21
1546822 SAMPLE3 202001 1-Jan-15 31-Dec-99 5122.12 5111.02
1546822 SAMPLE3 202002 1-Jan-15 31-Dec-99 3211.21 3211.21
Количество идентификаторов будет динамическим c. Я изменил приведенную выше таблицу на один раз, как показано ниже, в соответствии с требованиями. Получил соблазнительный результат.
ID NAME EFFECTIVEDATE TERMDATE 202001 202002 202003 ----- 201803
1546871 SAMPLE1 1-Aug-14 31-Dec-99
1065418 SAMPLE2 1-Jan-15 31-Dec-99
1546822 SAMPLE3 1-Jan-15 31-Dec-99
Мне нужно обновить эту временную таблицу с помощью PAIDAMOUNT
ID NAME EFFECTIVEDATE TERMDATE 202001 202002 202003 --- -------- 201803
1546871 SAMPLE1 1-Aug-14 31-Dec-99 5122.12 5111.02 ------ ------
1065418 SAMPLE2 1-Jan-15 31-Dec-99 0 3211.21 ------ ------
1065418 SAMPLE3 1-Jan-15 31-Dec-99 5122.12 3211.21 ------ ------
Мне нужно обновить соблазнительное на основе ID и COVERMONTH в условии where, но COVERMONTH - соблазнительные столбцы.
Ниже мой запрос
DECLARE @ID varchar(50)
DECLARE MY_CURSOR CURSOR
LOCAL STATIC READ_ONLY FORWARD_ONLY
FOR
SELECT ID FROM temptable
OPEN MY_CURSOR
FETCH NEXT FROM MY_CURSOR INTO @Id
WHILE @@FETCH_STATUS=0
BEGIN
DECLARE @Counter1 int
SET @Counter1 = 1
DECLARE @FinalCounter int
SET @FinalCounter = (Select Count(*) FROM sampletable)
DECLARE @CoverMonth varchar(20)
DECLARE @UpdateSql1 varchar(200)
WHILE (@Counter1 <= @FinalCounter)
BEGIN
SET @CoverMonth = (SELECT COVERMONTH FROM sampletable where ID=@Id)
SET @UpdateSql1 = 'UPDATE temptable' + ' SET [' + @CoverMonth + ' ' = 'PAIDAMOUNT' WHERE ID=@Id and @CoverMonth= 'column name of temptable'.
EXEC(@UpdateSql1)
SET @Counter1=@Counter1+1
END
END
Мне не удалось выполнить запрос. Но пришла идея, что Step1-> Итерировать по таблице выборок Step2-> Итерировать по соблазнительному Step3-> Обновить запрос с sampletable.ID = temptable.ID и sampletable.COVERMONTH = temptable. [ColumnName]
Как Могу ли я перебрать COVERMONTH в таблице выборок, чтобы получить все месяцы покрытия для определенного идентификатора и обновить значения
Любая помощь приветствуется.