“未来的世界:方向比努力重要,能力比知识重要,健康比成绩重要,生活比文凭重要,情商比智商重要! ”
——清华大学校长留给毕业生的一段话
发布新日志
-
2010-03-17 22:37:05
你的里面用到了Sum函数 这是个聚合函数 就必须要使用到group by 那么其他非聚合函数的列都要加到group by 中去。
补充 有个折中的方法 可以不用写这么多
打个比方(你的例子太长,表太多,我自己找个简单的例子):
a表
id name
1 jim
2 kate
b
id money
1 100
1 40
2 40
2 50
我要求id name money
按照你的写法是:
select a.id,a.name,sum(b.money)
from a inner join b on a.id=b.id grop by a.id,a.name;
这样group by 后面有2个
而我的写法:
select a.id,a.name,test.total from
a inner join (select id,sum(money) as total form. b group by id) test
on a.id=test.id;
这样 group by 后面就只有一个列。
查看(429)
评论(0)
收藏
分享
管理
-
2010-03-17 22:33:50
问题:
在SQL 中top n*可以查出前N条记录,我现在想把N用表达式表示出来 。
解答:
TOP后面是不能跟表达式的,如果你必须在SQL中通过计算获得n值的话 可以像下面这么写
declare @n int , @i int
set @i=5
set @n=(@i-1)*@i
execute ('select top ' + @n +' * from table1')
Tips:
top 5是只取5行,
top 5 with ties×是把和这5行有相同数据的行也取出来
查看(1197)
评论(0)
收藏
分享
管理