2012-07-06 105 views
1

我有一个包含4个参数的报告。我想让他们不是必需的。问题在于传统的做法是创建16个OR/AND语句。如果我有10个不需要的参数,SOL语句将失去控制。这有效,但有没有更简单的方法?可选的报告参数(有没有更好的方法?)

以下是我有:

主数据集:

select * 
from table 
where 
    table.one = @param1 OR @param1 IS NOT NULL 
    AND.....(etc.etc..) 

@参数1,@参数2,@参数3,@ param4:(默认值为空/空)

Select some_column from any_table UNION SELECT '' as Nothing 

回答

2

我一直这样做的方式是

WHERE 
    col1 = isnull(@col1, col1) 
    and col2 = isnull(@col2, col2) 
    ...etc 

这几乎是你所拥有的一些语义修正。

+0

所以会这样....... col1 = isnull(@ param1,NULL)? – user999690 2012-07-06 13:04:06

+0

否 - 如果你的参数是可选的,那么我会假设NULL意味着它们没有指定一个值。因此,如果值为NULL,则需要将表的列等同于其自身(以返回所有值)。 – 2012-07-06 13:15:52

+0

工作正常! – user999690 2012-07-06 13:22:11

相关问题