我想知道,是否可以在Case语句中对表进行更新?还是有某种方法可以做到这一点?我有一个按钮可以拉报告(该按钮将调用存储过程,并获取列及其驻留列的列表)。
我基本上想更新表IF,并且只有IF,该DateClosed
列为NULL并且ClosedBy
为null(即,到达结束日期,因此广告系列已关闭)。
我通常通过检查开始日期和结束日期来确定广告系列是否已关闭。即,当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)
因此,您想在发生这种情况之前更新表格SELECT
吗?
尝试这样的事情:
UPDATE dbo.Tbl_Campaign
SET -- what do you want to update to what value here????
WHERE
DateClosed IS NULL
AND ClosedBy IS NULL
还是您到底想做什么?您仍然不清楚和不清楚您的问题-您没有提到要满足该条件的WHICH表中的WHAT列,您希望将其更新为WHAT值.....
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句