Добавление нового столбца (с внутренним соединением) и вставка (обновление) значения с регистрацией, когда (SQL Server 2012)

#sql #sql-server

#sql #sql-сервер

Вопрос:

Каков наилучший подход для добавления столбца в существующую таблицу со значениями, у меня есть следующие таблицы:

 Table_A
ClientID, StatementID, CustBuy

Table_B
NewClientID
  

Я хочу добавить новый столбец YTD_Jan13

 alter Table_A add YTD_Jan13 varchar(20)

select 
(case
    when CustBuy=0 and StatementID>='01.01.2013' then 'New YTD'
    else 'Repead YTD'
end) as YTD_Jan13
from A inner join B
on A.ClientID = B.NewClientID
  

По сути, я хочу вставить значение в новый столбец (YTD_Jan13) со следующими условиями:
Если
1) Table_A.ClientID = Table_B.NewClientID
2) в Table_A (CustBuy=0 и StatementID>= ‘01.01.2013’) затем ‘Новый С начала года’
else ‘Повторить С начала года’

Я в замешательстве, я прошу вашей помощи Заранее спасибо, Хабиб

Ответ №1:

 alter Table_A add YTD_Jan13 varchar(20)
  

Затем вставьте значение ‘else’ в

 update Table_A Set YTD_Jan13 = 'Repeat YTD'
  

затем (это называется обновлением с присоединением)

 UPDATE  a
  SET   a.YTD_Jan13 = 'New YTD'
FROM    Table_A a 
INNER JOIN B 
ON A.ClientID = B.ClientID
Where CustBuy = 0 and StatementID >= '01.01.2013'
  

NB Предполагается, что в A нет записей для клиентов, которых нет в B. Если есть, вам придется немного поумнеть, чтобы YTD_Jan13 в этих случаях оставался нулевым.