我发现了一些与我想要做的非常相似的帖子,但它似乎没有用。我的选择中有这个案例:
case
when h.Posted_Flag=-1 and h.Returned_Flag=0 then 'Posted'
when h.Posted_Flag=0 then 'Unposted'
when h.Returned_Flag=1 and h.Posted_Flag=-1 then 'Returned'
when h.Returned_Flag = 2 then 'Partial Return'
else '*****'
end as Return_Status,
我想把它放在我的where子句中,等于我设置的变量:
Declare @TicketStatus nvarchar
set @TicketStatus = 'Returned'
and @TicketStatus=(case
when h.Posted_Flag=-1 and h.Returned_Flag=0 then 'Posted'
when h.Posted_Flag=0 then 'Unposted'
when h.Returned_Flag=1 and h.Posted_Flag=-1 then 'Returned'
when h.Returned_Flag = 2 then 'Partial Return'
end)
当我尝试运行我所拥有的内容时,我没有返回任何记录,当我在没有AND(情况)的情况下运行时,返回的内容有很多返回状态。
任何帮助都会很棒。
感谢 BD
答案 0 :(得分:5)
这是您如何声明变量的问题。如果你这样做会怎么样?
Declare @TicketStatus nvarchar
set @TicketStatus = 'Returned'
SELECT @TicketStatus
返回的值为'R'
,而不是'Returned'
,这是因为您没有给变量赋予长度。你应该这样做:
Declare @TicketStatus nvarchar(15)
set @TicketStatus = 'Returned'
答案 1 :(得分:0)
为什么不用这个条件?
h.Returned_Flag=1 and h.Posted_Flag=-1