Sql 单个参数中有多个列

Sql 单个参数中有多个列,sql,Sql,我已经为一项任务工作了一段时间,现在我已经不知所措了。我遇到的问题是,我需要在一个参数内的一个表中有多个列,以便根据人员的首字母缩写提取报告。这就是我所拥有的 WHERE (tblWarehouse.Employee + tblWarehouse.Employee2 +tblWarehouse.Employee3 = CASE WHEN ISNULL(@Employee, 'ALL') = 'ALL' THEN tblWarehouse.Employee + t

我已经为一项任务工作了一段时间,现在我已经不知所措了。我遇到的问题是,我需要在一个参数内的一个表中有多个列,以便根据人员的首字母缩写提取报告。这就是我所拥有的

WHERE (tblWarehouse.Employee + tblWarehouse.Employee2 +tblWarehouse.Employee3 = 
   CASE
      WHEN ISNULL(@Employee, 'ALL') = 'ALL' THEN 
      tblWarehouse.Employee + tblWarehouse.Employee2 + tblWarehouse.Employee3
    ELSE @Employee
  END)
当我运行查询时,当我输入在第1列和第2列中输入的员工姓名首字母时,它会提取信息。但是,它没有从第三列中提取任何内容。有没有其他方法可以获得这些信息?提前告诉你这么多。

我想你是想这么做

WHERE
       'ALL'                  = @Employee
    OR tblWarehouse.Employee  = @Employee
    OR tblWarehouse.Employee2 = @Employee
    OR tblWarehouse.Employee3 = @Employee
请记住,这将无法使用单个索引来查找您的结果。rational是长篇大论,但以下内容可能更有效

SELECT
     blah
FROM
(
    SELECT * FROM tblWarehouse WHERE 'All'     = @employee
    UNION ALL
    SELECT * FROM tblWarehouse WHERE Employee  = @employee
    UNION ALL
    SELECT * FROM tblWarehouse WHERE Employee2 = @employee
    UNION ALL
    SELECT * FROM tblWarehouse WHERE Employee3 = @employee
)
    AS tblWarehouse
INNER JOIN
    whatever
 ...

这样就可以对每个联合查询使用不同的索引,避免每次都必须扫描整个表,而只需通过索引进行快速搜索。

我认为这三列中只有一列被填充过?非常感谢!看到你的解释,我尝试了一种不同的方法,我成功了!请享受您的周末,并有一个伟大的一天!