我有一个存储过程,它可以获取具有特定ID的表中的所有行。我想要做的就是从该表中获取所有行如果STORE_ID 0如果id为0,则通过id或所有行获取行
这是我的代码使用权现在:
SELECT store_id, SUM(traffic) FROM traffic
WHERE store_id = @store_id AND year = @year
GROUP BY store_id
我想改变这个查询,以便它返回的所有行无论store_id在@store_id = 0时
我有一个存储过程,它可以获取具有特定ID的表中的所有行。我想要做的就是从该表中获取所有行如果STORE_ID 0如果id为0,则通过id或所有行获取行
这是我的代码使用权现在:
SELECT store_id, SUM(traffic) FROM traffic
WHERE store_id = @store_id AND year = @year
GROUP BY store_id
我想改变这个查询,以便它返回的所有行无论store_id在@store_id = 0时
在提出请求前测试您的store_id
。如果store_id == 0
,则发出另一个请求以获取关于store_id
的所有信息。
试试这个,如果@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
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
还等什么是你的问题? –
如何更改查询以返回所有行,而不管@store_id为0时的store_id – Jerodev
您可以尝试'WHERE store_id = @store_id或@store_id = 0)AND year = @ year' – praveen