我有一个存储过程,可以获取具有特定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如何都返回所有行
答案 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