0

我正在编写一个存储过程来计算一大堆不同的东西,但我有一点,重复了大约 9 次。

例如:

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

等等...

我如何编写一个函数(或类似的东西),我可以传入一点(真或假)和其他参数,如果为真则只返回结果集???

4

1 回答 1

1

这是你要找的吗?这是我可以根据当前发布的问题推断出的最好的。

SELECT COUNT(samples)
FROM dbo.X
WHERE
    (type=@argAType AND @argA=1)
    OR
    (type=@argBType AND @argB=1)
    OR
    (type=@argCType AND @argC=1)

在函数形式上,我认为这是对的:

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

  SELECT @count = COUNT(samples)
    FROM dbo.X
    WHERE
        (type=@argAType AND @argA=1)
        OR
        (type=@argBType AND @argB=1)
        OR
        (type=@argCType AND @argC=1)

  RETURN @count
END
于 2013-02-05T00:43:38.877 回答