我在前端有一个多选框,用户可以从中选择多个客户名称。我让系统将用户选择的客户名称保存到另一个表中,然后使用 IN 运算符使用此过滤器表中的值从其他表中提取记录。如果用户没有选择客户名称(因此没有记录保存到过滤表中),那么我想返回所有记录。我已经尝试了很多不同的方法,但无法让它正常工作。CASE
在子句中使用语句WHERE
似乎也根本不起作用。
为了展示一个非常简化的版本(我的实际代码从几个不同的表中收集数据),下面是一个从 table 返回数据的代码tmp_CustShipments
,基于tbl_CustSelect
. 它在用户进行选择时起作用。
但是,当用户没有选择时,我想从tmp_CustShipments
表中返回所有记录。我如何实现这一目标?
如果IF ... ELSE ...
使用 ( ),那么系统似乎期望“into”部分有不同的表名,否则 SQL 将返回一个错误,说明该表已经存在。这将使它变得非常混乱,因为必须将结果集用作后续查询中进一步、更复杂计算的输入。
SELECT a.*
into #qry_ShipStat
FROM #tmp_CustShipments a
WHERE a.CustName IN (SELECT Cust FROM dbo.tbl_CustSelect)
如果可以的话请帮忙。非常感谢。