Что я хочу знать, возможно ли как-то сделать обновление для таблицы в выражении Case? Или, если есть какой-то способ сделать это? У меня есть кнопка для вывода отчета (эта кнопка идет и вызывает хранимую процедуру, и она получает список столбцов и их столбцов).Выполнение обновления в SQL с оператором CASE WHEN
Я в принципе хочу, чтобы обновить таблицу, IF, и только тогда, когда DateClosed
столбец NULL AND ClosedBy
равно нулю (то есть, была достигнута дата окончания, поэтому кампания ЗАКРЫТО).
Как обычно я определяю, закрыта ли кампания, выполняется проверка в начале и конце даты. Т.е. когда EndDate < GetDate() Затем «Закрыто». Таким образом, очевидно, что отображается правильно, но моя база данных отображает нуль, потому что обновления не было.
Это моя хранимая процедура:
ALTER PROCEDURE [dbo].[sp_CampaignStats]
@from DATETIME,
@to DATETIME
AS
SELECT
CampaignName AS 'CAMPAIGN NAME',
CampaignDescription AS 'CAMPAIGN DESCRIPTION',
CASE
WHEN EndDate >= GETDATE() AND StartDate <= GETDATE() THEN 'Active'
WHEN StartDate >= GETDATE() THEN 'Pending'
WHEN CampaignStatus = 4 THEN 'Archived'
ELSE 'Closed'
END as 'CurrentStatus',
CONVERT(VARCHAR(11), StartDate, 106) + ' - ' + CONVERT(VARCHAR(11), EndDate, 106) AS 'CAMPAIGN DATES',
Discount AS 'DISCOUNT',
[Target] AS 'TARGET',
Uptake AS 'UPTAKE',
tc.DateAdded as 'DATE ADDED',
U.FirstName + ' ' + u.LastName As 'ADDED BY',
CASE
WHEN CloseBy IS NULL AND EndDate < GETDATE() AND CloseBy = Null THEN 'System'
WHEN CampaignStatus = 4 THEN 'Archived'
WHEN CloseBy IS not Null THEN UU.FirstName + ' ' + uu.LastName
ELSE 'Not Closed'
END AS 'CLOSED BY',
DateClosed AS 'DATE CLOSED'
FROM
Tbl_Campaign tc
LEFT JOIN
tbl_User U ON Tc.AddedBy = U.UserId
LEFT JOIN
Tbl_User UU ON TC.CloseBy = UU.UserId
WHERE
(startDate >= @from OR enddate <= @to)
AND CampaignStatus IN (1, 2, 3, 4)
' CASE' в T-SQL является ** выражением ** (например, 'a + b'), которое возвращает одно атомное значение - оно не используется для« управления потоком »или выполнения блоков кода или чего-либо подобного. –
У вас есть идея, как я мог делать то, что я пытаюсь сделать? Я страдаю. –
Ваш вопрос довольно неясен - у вас есть кнопка * для вывода отчета * - и в следующем предложении вы хотите обновить таблицу? Можете ли вы опубликовать структуру таблицы, о которой идет речь, и объясните более четко (возможно, с указанием некоторого кода), что вы пытаетесь сделать? –