Обновить таблицу, но использовать значение из столбца - выберите регистр - PullRequest
0 голосов
/ 24 февраля 2012

Не уверен, если это возможно, но у меня есть поле в таблице, которое должно быть обновлено значением из другой таблицы, но ссылается на определенный столбец, например, если это 1, тогда выведите значение из столбца [Jan] и т. д.

Update table1
    Set Total = 
        CASE @count
            WHEN 1  THEN [Jan]
            WHEN 2  THEN [Feb]
            WHEN 3  THEN [Mar]
            WHEN 4  THEN [Apr]
            WHEN 5  THEN [May]
            WHEN 6  THEN [Jun]
            WHEN 7  THEN [Jul]
            WHEN 8  THEN [Aug]
            WHEN 9  THEN [Sep]
            WHEN 10 THEN [Oct]
            WHEN 11 THEN [Nov]
            WHEN 12 THEN [Dec]
        END
    from table2

Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 24 февраля 2012
Update t
    Set t.Total = 
        CASE @count
            WHEN 1  THEN t2.[Jan]
            WHEN 2  THEN t2.[Feb]
            WHEN 3  THEN t2.[Mar]
            WHEN 4  THEN t2.[Apr]
            WHEN 5  THEN t2.[May]
            WHEN 6  THEN t2.[Jun]
            WHEN 7  THEN t2.[Jul]
            WHEN 8  THEN t2.[Aug]
            WHEN 9  THEN t2.[Sep]
            WHEN 10 THEN t2.[Oct]
            WHEN 11 THEN t2.[Nov]
            WHEN 12 THEN t2.[Dec]
        END
    from table1 t inner join table2 t2 
    on t.ID = t2.ID --your condition
3 голосов
/ 24 февраля 2012

Вы можете поместить CASE в подзапрос:

UPDATE table1
SET Total=(SELECT TOP 1 CASE @count
            WHEN 1  THEN [Jan]
            WHEN 2  THEN [Feb]
            WHEN 3  THEN [Mar]
            WHEN 4  THEN [Apr]
            WHEN 5  THEN [May]
            WHEN 6  THEN [Jun]
            WHEN 7  THEN [Jul]
            WHEN 8  THEN [Aug]
            WHEN 9  THEN [Sep]
            WHEN 10 THEN [Oct]
            WHEN 11 THEN [Nov]
            WHEN 12 THEN [Dec]
        END
        FROM table2)
0 голосов
/ 24 февраля 2012

Вы можете использовать UNPIVOT для этого.

UPDATE Table2
SET [Total] =
(
    SELECT B.[Total]
    FROM
    (
        SELECT [Jan], [Feb], [Mar], [Apr], [May], [Jun]
             , [Jul], [Aug], [Sep], [Oct], [Nov], [Dec]
        FROM Table2
    ) AS A ([1], [2], [3], [4], [5], [6]
          , [7], [8], [9], [10], [11], [12])
    UNPIVOT ([Total] FOR [Month] IN
           ([1], [2], [3], [4], [5], [6]
          , [7], [8], [9], [10], [11], [12])) B
    WHERE B.[Month] = @count
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...