首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql having 中可以用1 2 3等等指代列的数字么解决办法

2012-05-02 
sql having 中可以用1 2 3等等指代列的数字么sql:SQL codeselect a1, a2, a3, sum(a4) as s, (select sum(

sql having 中可以用1 2 3等等指代列的数字么
sql:

SQL code
select a1, a2, a3, sum(a4) as s, (select sum(x) from xxxxxx .......................) as xfrom tabgroup by a1, a2, a3


现在我想在后面加一句:having (两个sum不等), 请问该怎么写方便,因为x列很长很长,不想写sum(a4) <> (select sum(x) from xxxxxx .......................),可以用类似group by 1 2...等等的指代方法?

另: 如果我写全了,sql会不会把(select sum(x) from xxxxxx .......................)执行两遍啊?

[解决办法]
SQL code
select * from(select a1, a2, a3, sum(a4) as s, (select sum(x) from xxxxxx .......................) as xfrom tabgroup by a1, a2, a3)m where s<>v--这样既可,没必要去加having
[解决办法]
没有办法使用having 1代替第一列的,可以向楼上的方法把语句当成子查询去处理。

另: 如果我写全了,sql会不会把(select sum(x) from xxxxxx .......................)执行两遍啊?

不会的,相同的语句还是聚合函数的结果集SQL Server会直接从计划缓存里面读取结果的(前提是完全一样的语句)。

热点排行
Bad Request.