我想要的是有一个SELECT,它根据表的值和两个变量设置一个名为Current的字段的值,这两个变量被声明为存储过程的输入,其中select如下:
DECLARE @AdminTestId INT = 111
DECLARE @UserTestId INT = null
AdminTestId UserTestId Current
111 1
111 1
222 0
333 0
DECLARE @AdminTestId INT = 111
DECLARE @UserTestId INT = 457
AdminTestId UserTestId Current
111 456 0
111 457 1
123 0
一些帮助和建议将不胜感激。
答案 0 :(得分:1)
SELECT
...
CAST(CASE
WHEN t.AdminTestID = @AdminTestID
AND (t.UserTestID = @UserTestID
OR @UserTestID is NULL AND t.UserTestID is NULL)
THEN 1
ELSE 0
END as bit) as Current
FROM ...
答案 1 :(得分:1)
如果 UserTestId 为空或与UserTestId列匹配,您似乎有一些逻辑,其中 Current 只应设置为1。您可以在SQL查询中使用case语句,如下所示:
DECLARE @AdminTestId INT = 111
DECLARE @UserTestId INT = 457
SELECT
AdminTestId,
UserTestId
CASE
WHEN (@AdminTestId IS NULL AND @UserTestId IS NULL) THEN 0
WHEN (@AdminTestId = AdminTestId AND @UserTestId = UserTestId) THEN 1
WHEN (@AdminTestId = AdminTestId AND @UserTestId IS NULL) THEN 1
WHEN (@AdminTestId IS NULL AND @UserTestId = UserTestId) THEN 1
ELSE 0
END AS IsCurrent