我的查询必须在特定日期之间获取客户的陈述和某些数据。出于测试目的,我创建了一些测试帐户并使用了完整的查询。
现在我需要在日期之间进行过滤。这是我目前的查询:
SELECT
FechaDeSistema,
Code,
CASE
WHEN DR_Socio = @SocioNum THEN cast(Cantidad as decimal(19,2))
END as Debit,
CASE
WHEN CR_Socio = @SocioNum THEN cast(Cantidad as decimal(19,2))
END AS Credit,
CASE
WHEN DR_Socio = @SocioNum THEN cast(BalanceDebito as decimal(19,2))
WHEN CR_Socio = @SocioNum THEN cast(BalanceCredito as decimal(19,2))
END AS Balance
FROM Ledger
WHERE (Debito_Cuenta = @Acct)
OR (Credito_Cuenta = @Ncct)
AND (FechaDeSistema BETWEEN @Start AND @Final)
ORDER BY FechaDeSistema DESC";
日期的参数由我设置的两个日历给出。但是,当我生成报告时,它仍然显示整个数据范围,从不在我选择的日期之间进行选择。我做错了什么?
答案 0 :(得分:7)
将WHERE子句更改为:
WHERE (Debito_Cuenta = @Acct OR Credito_Cuenta = @Ncct)
AND FechaDeSistema BETWEEN @Start AND @Final
您的括号不正确,并且将您的条款分组错误。
答案 1 :(得分:1)
这可能是您的WEHRE条款的操作顺序。
WHERE something
OR somethingelse
AND onemorething
SQL可能会以不同于您期望的方式解释它们。在某处添加括号以澄清您实际需要的内容。