我想知道是否可以为多个客户端运行一个脚本,当我为指定的客户端运行时,我可以添加额外的 where 子句,而不必多次重写基本脚本?
例如。基本脚本是
SELECT Status, count(distinct T1.AccountNo)
FROM Orders (nolock), Accounts (NOLOCK)
WHERE Orders.AccountNo = Accounts .AccountNo
AND date between '1 Oct 2011' and '31 Oct 2011'
GROUP BY Status
但是当我竞选客户 A 时,我想包括额外的标准
AND Accounts.Role IN ('User','Admin')
AND Accounts.Active= 'Y'
最佳答案
SELECT Status, count(distinct T1.AccountNo)
FROM Orders (nolock), Accounts (NOLOCK)
WHERE Orders.AccountNo = Accounts .AccountNo
AND date between '1 Oct 2011' and '31 Oct 2011'
AND CASE WHEN Client = 'A' THEN Accounts.Role ELSE 'User' END IN ('User', 'Admin')
AND CASE WHEN Client = 'A' THEN Accounts.Active ELSE 'Y' END = 'Y'
GROUP BY Status
关于sql where 子句仅包含 if case when,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8291290/