我正在编写一个存储过程来计算一堆不同的东西,但我有一点,它重复了大约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)和其他参数,并且只返回结果集,如果是真的???
答案 0 :(得分: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