日期:2014-05-18 浏览次数:20669 次
select a1, a2, a3, sum(a4) as s, (select sum(x) from xxxxxx .......................) as x from tab group by a1, a2, a3
select * from( select a1, a2, a3, sum(a4) as s, (select sum(x) from xxxxxx .......................) as x from tab group by a1, a2, a3)m where s<>v --这样既可,没必要去加having
------解决方案--------------------
没有办法使用having 1代替第一列的,可以向楼上的方法把语句当成子查询去处理。
另: 如果我写全了,sql会不会把(select sum(x) from xxxxxx .......................)执行两遍啊?
不会的,相同的语句还是聚合函数的结果集SQL Server会直接从计划缓存里面读取结果的(前提是完全一样的语句)。