我想生成一个查询,显示startdate是否少于4个月,如果超过4个月给出10%,则给出5%。
我正在使用SQLFiddle而我没有得到正确的输出。目前它给我5%的所有列或者如果我替换
SET Discount = ''
到
SET Discount = '5%'
它将成功查询但不显示数据。
这是我做的代码......
Declare
startdate date,
finishdate date,
Discount varchar(4)
UPDATE Persons
SET [Discount] = ' '
SELECT *, DATEADD(MM,-4,startdate) AS TADate
FROM Persons
WHERE Discount = '5%' AND startdate < dateadd(month,-4,getdate()) OR
Discount = '10%' AND startdate < dateadd(month,4,getdate())
如果有人可以帮助我,请提前致谢。
答案 0 :(得分:3)
在case
中使用update
语句根据date
分配折扣
尝试update
这样的
UPDATE Persons SET [Discount] = case
when startdate > dateadd(month,-4,getdate()) and startdate <= getdate() then '5%'
when startdate < dateadd(month,-4,getdate()) Then '10%'
End
SELECT * FROM Persons
答案 1 :(得分:0)
选中此项,您可以在使用update语句时使用case语句
Declare
startdate date,
finishdate date,
Discount varchar(4)
UPDATE Persons
SET [Discount] = Case
When startdate < dateadd(month,-4,getdate()) and startdate <= getdate()
Then '5%' when startdate < dateadd(month,4,getdate()) Then '10%'
End