sql where 子句仅包含 if case when

标签 sql case where-clause

我想知道是否可以为多个客户端运行一个脚本,当我为指定的客户端运行时,我可以添加额外的 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/

相关文章:

sql - Redshift除法结果不包含小数

sql - 有哪些工具可以测试SQL语句的性能?

sql - 优化 SQL Server WHERE 子句条件中的 CASE WHEN 语句

sql-server - 使用 T-SQL 的 CASE 表达式

python - 查找 NumPy 数组中包含子字符串的所有位置(最有效?)

mysql - 仅搜索列的字母数字字符

mysql - 导入包含多条记录的 CSV - 更新多行

php - WordPress:多站点帖子查询的过滤器类别

MySql Case语句获取日期时间在现在之后的第一行

MYSQL where 或语句未按预期工作