我有一个简单的查询,如下所示:
SELECT * FROM orders
返回所有订单,简单。
我想在我的查询中添加可选参数。
DECLARE @group INT;
SET @group = 1 --IT1
SELECT * FROM orders WHERE group = isnull(@group, group)
这也很好用。
我的问题是我需要像这样的第二个参数:
DECLARE @group INT;
SET @group = 1 --IT1
DECLARE @department VARCHAR(8);
SET @department = 'IT'
SELECT * FROM orders WHERE /*and here add limitation with department*/ group = isnull(@group, group)
我的订单表有 GROUP 列,但没有 DEPARTMENT 列。
情况看起来像这样:我有 2 个组合框。一为部门,二为组。首先,我有选择:
- 全部
- 它
- 呼叫中心
当用户从 combo1 中选择某些内容时填充第二个。如果他选择 IT,组组合框将包含以下选项:
- 全部
- IT1
- IT2
如果用户从第一个组合部门中选择然后分组,这很容易,因为我只检查组。
问题是当他想要来自 IT 部门的所有订单时。
这是将组分配给部门的方式
- 它 - 1,2,5
- 呼叫中心 - 4,6
- 打印 - 3
有任何想法吗?
添加:
我创造了这样的东西:
DECLARE @group INT;
SET @group = 1 --IT1
DECLARE @department VARCHAR(8);
SET @department = 'IT'
SELECT * FROM orders WHERE
(@department IS NULL OR (@department='IT' AND group IN (1,2,5)) OR (@department='PRINT' AND group =3))
AND
(@group IS NULL OR group = @group)
我不知道它是否正确,它以某种方式起作用:)