Обновление значения из другой таблицы, но с другим значением для JOIN - PullRequest
0 голосов
/ 15 февраля 2019

Каков наилучший способ обновления столбца myAmountColumn в myTable на основе суммы столбца Amount в myOtherTable, объединяющей портфолио и безопасность столбцов, кроме случаев, когда myTable.portfolio = 'ABC', я хочу присоединить его к myOtherTable.portfolio ='123'.

Спасибо.

Это ожидаемый результат в myTable и пример данных в myOtherTable:

myTable
Portfolio   Security        myAmountColumn
ABC         A               1000                       --> this is from 
                                     myOtherTable.Amount where Portfolio = '123'
DEF         B               2000                       --> this is from 
                                     myOtherTable.Amount where Portfolio = 'DEF'

myOtherTable 
Portfolio   Security    Amount
123         A           1000
DEF         B           2000

В приведенном ниже запросе выдается ошибка

Сообщение 8152, уровень 16, состояние 14, строка 704

Строка или двоичные данные будут усечены.

Оператор завершен.

update j
set myAmountColumn =
  (
   select sum 
     (
       abs(convert(float,c2.Amount))
      )
    from      myOtherTablec2
    where   c2.portfolio = 
      CASE WHEN j.portfolio = 'ABC' THEN '123'
      ELSE j.portfolio
      END                       
    and c2.pta_security = j.tab_security
    ),
    CommentsColumn = CommentsColumn + ' my comments'
 from      myTable j, myOtherTablec
 where   c.portfolio = 
     CASE WHEN j.portfolio = 'ABC' THEN '123'
     ELSE j.portfolio
     END 
   and c.pta_security = j.tab_security

1 Ответ

0 голосов
/ 15 февраля 2019

Похоже, это единственный фрагмент, который вам не хватает:

WHERE myOtherTable.portfolio=CASE
  WHEN myTable.portfolio = 'ABC' THEN '123'
  ELSE myTable.portfolio
END

Хотя я использую "ГДЕ", это также может быть в предложении ON в JOIN.

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