【发布时间】:2012-04-19 17:48:22
【问题描述】:
我有一个这样的简单查询:
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 部门的所有订单。
这是将组分配给部门的方式
- 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)
我不知道它是否正确,它以某种方式起作用:)
【问题讨论】:
-
SQL查询在哪里定义和执行? (这是一个 .net 程序吗?)
-
这是一个aspx格式的报告,我需要从我的标准中选择所有订单,然后处理它们并显示结果。
标签: tsql sql-server-2005 optional-parameters