#sql #sql-server #sql-server-2012
#sql #sql-сервер #sql-server-2012
Вопрос:
все
У меня есть следующие коды:
update New_Clients_Report set
YTD_Jan13 = (case when StatementID>='01.01.2013' then 'New from Jan-13'
else 'Repead' end)
from New_Clients_Report so inner join MonthSales_NC nc
on so.ClientID=nc.NewClientID and nc.NewClientDate='01.01.2013'
update New_Clients_Report set
YTD_Jan13 = (case when StatementID>='02.01.2013' then 'New from Feb-13'
else 'Repead' end)
from New_Clients_Report so inner join MonthSales_NC nc
on so.ClientID=nc.NewClientID and nc.NewClientDate='02.01.2013'
update New_Clients_Report set
YTD_Jan13 = (case when StatementID>='03.01.2013' then 'New from Mar-13'
else 'Repead' end)
from New_Clients_Report so inner join MonthSales_NC nc
on so.ClientID=nc.NewClientID and nc.NewClientDate='03.01.2013'
И так далее до 05.01.2014
Код работает хорошо, если я работаю отдельно.
добавьте информацию: 1) «Новое с 14 января» для тех клиентов, которые работают с нами с января 2014 года; 2) «Новое с 14 февраля» для тех клиентов, которые работают с нами с февраля 2014 года; 3) «Новое с 14 марта» для тех клиентов, которыеработают с нами с марта 2014 года
Я хочу объединить этот код в один, заранее спасибо
Ответ №1:
Если вы рассматриваете «Новое с 14 января» для тех клиентов, которые работают с января 2014 года, а также если их StatementID больше, чем январь 2014 года, тогда вы можете написать инструкцию update как:
update New_Clients_Report set
YTD_Jan13 = (case when StatementID>=NewClientDate then 'New from '
REPLACE(RIGHT(CONVERT(VARCHAR(9), NewClientDate, 6), 6), ' ', '-')
else 'Repead' end)
from New_Clients_Report so inner join MonthSales_NC nc
on so.ClientID=nc.NewClientID
--and nc.NewClientDate='01.01.2013'
Проверьте демонстрацию здесь.