繁体   English   中英

T-SQL IF-ELSE

[英]T-SQL IF-ELSE

是否可以使用IF-ELSE做类似的事情或类似的事情:

SELECT
MemberID,
ProfileTypeID
PrCountryID,    -- 3
PrStateID,      -- 4
PrStateInt
FROM Member
WHERE PrCity IS NOT NULL
IF @ShowUnclaimed = 'N'
    AND Claimed = 'Y'
    AND SBIcon = 'N'
END
AND Viewable = 'Y'
AND SystemID = 2

非常感谢您提供任何信息。

新杰基

无需为此使用Case

SELECT
    MemberID,
    ProfileTypeID
    PrCountryID,    -- 3
    PrStateID,      -- 4
    PrStateInt
FROM Member
WHERE PrCity IS NOT NULL
AND Viewable = 'Y'
AND SystemID = 2
AND ( @ShowUnclaimed != 'N' 
      OR ( Clamed = 'Y' AND SBIcon = 'N' )
    )

您正在寻找case表达式( MSDN

SELECT MemberID,
       ProfileTypeID
       PrCountryID,    -- 3
       PrStateID,      -- 4
       PrStateInt

FROM   Member

WHERE  PrCity IS NOT NULL
       AND CASE
               WHEN @ShowUnclaimed = 'N' AND Claimed = 'Y' AND SBIcon = 'N' THEN 1
           END = 1
       AND Viewable = 'Y'
       AND SystemID = 2

如果我正确理解您的意图,则无需IFCASE

就像这样的事情似乎是您想要做的...?

WHERE PrCity IS NOT NULL
AND (@ShowUnclaimed = 'Y'
    OR (Claimed = 'Y'
    AND SBIcon = 'N'))
AND Viewable = 'Y'
AND SystemID = 2

使用CASE尝试一下:

SELECT
    MemberID,
    ProfileTypeID
    PrCountryID,    -- 3
    PrStateID,      -- 4
    PrStateInt
FROM Member
WHERE PrCity IS NOT NULL
    AND Viewable = 'Y'
    AND SystemID = 2
    AND Claimed = CASE WHEN  @ShowUnclaimed = 'N' THEN 'Y' ELSE Claimed END
    AND SBIcon = CASE WHEN  @ShowUnclaimed = 'N' THEN 'N' ELSE SBIcon END

这只是做到这一点的一种方法。 祝你好运。

暂无
暂无

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

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