簡體   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