2012-07-06 107 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

相關問題