[英]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
如果我正确理解您的意图,则无需IF
或CASE
。
就像这样的事情似乎是您想要做的...?
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.