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

等々...

ビット (true または false) とその他の引数を渡して、true の場合にのみ結果セットを返すことができる関数 (または同様のもの) を作成するにはどうすればよいですか?

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 に答える