我正在为我的公司撰写报告。该报告将能够选择特定客户或所有客户。
我有2个查询
Select *
from customers
和
Select *
from customers
where id = @customer_id
如何通过单个SQL查询选择特定客户或所有客户?
我试过了,但它给了我错误。
select *
from customers
where id in ( case when @customer_id > 0 Then @customer_id else (select id from customers ) end)
答案 0 :(得分:1)
你可以使用这样的技巧:
select * from customers where id=@customer_id or @customer_id=0
答案 1 :(得分:0)
此查询将获得您想要的结果
select * from customers where @customer_id IS NULL OR id=@customer_id
答案 2 :(得分:0)
我目前没有安装服务器进行测试,但我认为我之前使用以下方法已经实现了这种逻辑。您在where子句中使用CASE语句的尝试是无效的。相反,我已经在每种情况下通过外部查询包装所需的查询,允许在选择器中使用CASE语句(像往常一样)。
同样,我无法对此进行测试,因此可能需要进行一些细微的修改。
$('#start_date').datepicker({
orientation: "bottom auto",
autoclose: true,
todayHighlight: true,
useCurrent: false
}).mask("99/99/9999");
$('#end_date').datepicker({
orientation: "bottom auto",
autoclose: true,
todayHighlight: true,
useCurrent: false
}).mask("99/99/9999");
答案 3 :(得分:0)
您可以在sql中使用函数;
DROP FUNCTION IF EXISTS showCustomer
CREATE FUNCTION showCustomer (Id int)
RETURNS TABLE
AS
BEGIN
IF Id = -1
RETURN (SELECT * from customers)
ELSE
RETURN (SELECT * from customers where customers.id=id )
END
END