Справка по синтаксису SQL - обновление - PullRequest
1 голос
/ 27 мая 2011

У меня есть некоторый код, подобный следующему:

Update table_name
set
[column] = case when d.data is null, then null else d.columnname end.

from...
etc

Мой вопрос заключается в том, как настроить функцию, в которой 'else d.columnname' суммирует несколько столбцов из объединений.

Будет ли это что-то вроде:

 ...then null else sum(d.column1 + rf.column2 + rwf.column3) as tempcolumn end,

или

...then null else (d.column1 + rf.column2 + rwf.column3) end,

Как правильно рассчитать сумму столбцов в данной заданной ситуации?

Ответы [ 2 ]

2 голосов
/ 27 мая 2011

Вы можете просто сделать:

update MyTable
set column =
    case 
        when d.data is not null 
        then d.column1 + rf.column2 + rwf.column3 
    end
from ...

CASE вернет NULL по умолчанию, когда совпадений нет.

0 голосов
/ 27 мая 2011

Примерно так должно работать:

UPDATE table_name
   SET [column] = CASE WHEN d.data IS NULL
                          THEN null 
                          ELSE (d.column1 + rf.column2 + rwf.column3)
                  END
  FROM table_name
      INNER JOIN other_table1 d ON ...
      INNER JOIN other_table2 rf ON ...
      INNER JOIN other_table3 rwf ON ...

Конечно, в приведенном выше запросе вы должны установить правильные отношения между таблицами в предложениях INNER JOIN - ON

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...