SELECT

    'IsActive' =

FROM Users u
    INNER JOIN Permissions p ON u.Id = p.UserId


我需要在上面的查询中添加一些逻辑以获得与执行下面的操作相同的结果(这是伪代码)。

用案例陈述可能吗?

if(
    (p.Approved &&
        (p.secondaryApproval == null ||  (p.SecondaryApproval != null && p.secondaryApproval)
    )
  )


上面if语句中的逻辑用IsActive确定应该为true。

我可以在查询中以某种方式使用sql case语句mimick此逻辑吗?

最佳答案

像这样:

SELECT
    CASE
        WHEN p.Approved=1 AND (p.SecondaryApproval IS NULL OR p.SecondaryApproval=1) THEN 1
        ELSE 0
    END AS IsActive
FROM Users u
    INNER JOIN Permissions p ON u.Id = p.UserId


请注意,在您的SQL和C#代码中,都不必在p.SecondaryApproval的另一侧测试OR是否为空。

关于sql - 如何使用sql case语句重新创建此逻辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22917230/

10-11 07:52