如果id为0,则按id或所有行获取行

时间:2014-01-21 09:56:11

标签: sql sql-server

我有一个存储过程,可以获取具有特定ID的表中的所有行。我想要做的是,如果store_id为0,则从该表中获取所有行。

这是我现在使用的代码:

SELECT store_id, SUM(traffic) FROM traffic 
WHERE store_id = @store_id AND year = @year 
GROUP BY store_id

我想更改此查询,以便在@store_id = 0时无论store_id如何都返回所有行

4 个答案:

答案 0 :(得分:2)

尝试以下

SELECT store_id, SUM(traffic) FROM traffic 
WHERE (store_id = @store_id OR @store_id = 0) AND year = @year 
GROUP BY store_id

答案 1 :(得分:1)

IF @store_id = 0
BEGIN
SELECT store_id, SUM(traffic) FROM traffic 
WHERE year = @year 
GROUP BY store_id
END
ELSE
BEGIN
SELECT store_id, SUM(traffic) FROM traffic 
WHERE store_id = @store_id AND year = @year 
GROUP BY store_id
END

答案 2 :(得分:0)

在提出请求之前测试store_id。如果是store_id == 0,则提出另一个请求以获取有关store_id的所有内容。

答案 3 :(得分:0)

试试这个,如果@store_id也可能是NULL,那么请执行以下操作

SELECT store_id, SUM(traffic) FROM traffic 
WHERE (store_id = @store_id OR ISNULL(@store_id, 0) = 0)
 AND year = @year 
GROUP BY store_id