此查询返回未按查询预期方式分组的结果。这种情况最近才开始发生,并且每周至少发生两次。
SELECT
UserN, Program, CPair, PosCcy1, OpenPosOpt, CrossR,
OptPrem, DailyOptValue, OptPandL
FROM (
(SELECT
UserN, Program, CPair,PosCcy1,OpenPosOpt,RevalC1,
RevalC2, CrossR, OptPrem,DailyOptValue,OptValue, OptPandL
FROM
(SELECT
UserN, Program, CPair,
ROUND(SUM(Ccy1Amount),4) AS PosCcy1,
ROUND(SUM(OpenOptPos),4) AS OpenPosOpt,
MAX(RevalC1) as RevalC1,
MAX(RevalC2) as RevalC2,
case when MAX(RevalC2) = 0 and MAX(RevalC1) = 0 then 0
else MAX(RevalC2)/MAX(RevalC1) end as CrossR,
ROUND(SUM(OptPrem),2) AS OptPrem,
ROUND(SUM(DailyOp),4) AS DailyOptValue,
ROUND(SUM(OptValue),4) AS OptValue,
ROUND(SUM(OpPandL),4) AS OptPandL,
sum(Prem) as Prem
FROM
AReport rr
GROUP BY
UserN, Program, CPair) a
WHERE
not(PosCcy1= 0 and OpenPosOpt= 0 and Prem = 0)
)) results
'AReport'是一个视图。
可以看出,我希望查询返回按用户,程序和CPair分组的数据。几乎总是我得到那个结果,但突然有时结果不是这样的。
当发生这种情况时,SQL Server会在一整天内返回未分组的结果。我在SSMS期间运行了部分查询,我得到的结果按预期分组为两个内部嵌套选择。在我突出显示最外层选择的那一刻,结果集是未分组的。
我在错误日志和事件查看器中查找了错误,似乎没有任何建议。第二天自动纠正此行为。有人可以告诉我,编写查询的方式是否会导致此行为。
答案 0 :(得分:0)
答案 1 :(得分:0)
最后发现不一致的是显示的数据几乎总是以所需的方式排序。见Why does SQL Server 2008 order when using a GROUP BY and no order has been specified?
通过查询添加订单修复了问题。