繁体   English   中英

where子句中的案例表达

[英]Case Expression inside where clause

我发现一些帖子与我想要做的非常相似,但似乎没有用。 我选择这种情况:

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(case)的情况下运行此记录时,它们中有许多带有Returned的Retunred Status。

任何帮助都会很棒。

谢谢BD

这是如何声明变量的问题。 如果执行此操作会怎样?

Declare @TicketStatus nvarchar
set @TicketStatus = 'Returned'

SELECT @TicketStatus

返回值是'R' ,而不是'Returned' ,发生这种情况是因为您没有提供变量的长度。 你应该做这个:

Declare @TicketStatus nvarchar(15)
set @TicketStatus = 'Returned'

您为什么不只使用条件?

h.Returned_Flag=1 and h.Posted_Flag=-1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM