2013-02-05 84 views
0

我正在寫一個存儲過程,它計算整個一堆不同的東西,但我有一點點,它重複了大約9次。SQL多個if語句,相同的結果集,不同的參數

如:

if @argA = 1 (true) 
select Count(samples) from dbo.X where type = @argAType 

if @argB = 1 (true) 
select Count(samples) from dbo.X where type = @argBType 

if @argC = 1 
select Count(samples) from dbo.X where type = @argCType 

等等...

我怎麼能寫一個函數(或類似的東西),我可以在一個比特合格(true或false),以及其他參數,只有返回結果集如果是true?

+1

你想要什麼它當位是「假的」迴歸? – Jaxidian

回答

1

這是你在找什麼?這是我可以根據當前發佈的問題推斷出的最好結果。

SELECT COUNT(samples) 
FROM dbo.X 
WHERE 
    ([email protected] AND @argA=1) 
    OR 
    ([email protected] AND @argB=1) 
    OR 
    ([email protected] AND @argC=1) 

在函數形式,我認爲這是正確的:

CREATE FUNCTION GetCount(@n AS BIGINT) RETURNS BIGINT 
AS 
BEGIN 
    DECLARE @count BIGINT 

    SELECT @count = COUNT(samples) 
    FROM dbo.X 
    WHERE 
     ([email protected] AND @argA=1) 
     OR 
     ([email protected] AND @argB=1) 
     OR 
     ([email protected] AND @argC=1) 

    RETURN @count 
END 
相關問題