首页 > 解决方案 > TSQL 查询 - 如何让 WHERE 条件“加起来”?

问题描述

编辑3:

我有下表:

物品 内部制造 购买 外包
一个 0 1 0
1 0 0
C 0 0 1
D 1 1 0
0 1 1

用户希望按属性过滤该数据。过滤“内部制造”= 1 应仅显示“内部制造”= 1 的项目。将“purchasing”= 1 的过滤器添加到第一个过滤器应显示所有可以内部制造或购买的物品。为“外包”添加另一个过滤器也应该显示外包的项目。

但是将任何过滤器设置为 0 意味着我不想看到该属性为真的结果。

不为属性设置过滤器意味着:我不关心该属性具有哪个值。

EDIT2: 更多说明

我强调了困难的部分。值 0 和 1 之间的行为存在差异。不过,我无法更改该逻辑。它必须以这种方式工作。


我有 3 个变量:@var1, @var2, @var3对应于 3 columns @col1, @col2, @col3。每列的值为 1 或 0,每个 var 的值可以为 0,1 或 NULL。我的陈述看起来像这样:

SELECT * FROM tbl a
    ((a.col1 = @var1) OR @var1 IS NULL) AND
    ((a.col2 = @var2) OR @var2 IS NULL) AND
    ((a.col3 = @var3) OR @var3 IS NULL)

标签: sql-servertsql

解决方案


只需添加n列的值并验证添加是否 >= 1


推荐阅读