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
...
这样就可以对每个联合查询使用不同的索引,避免每次都必须扫描整个表,而只需通过索引进行快速搜索。我认为这三列中只有一列被填充过?非常感谢!看到你的解释,我尝试了一种不同的方法,我成功了!请享受您的周末,并有一个伟大的一天!