主题:控制记录显示分组顺序
地平线
[专家分:480] 发布于 2006-10-24 20:21:00
控制记录显示分组顺序
break on deptno
(不显示重复值)
select deptno,ename
from emp
order by deptno;
(ORDER BY子句用于控制BREAK)
显示为
10 clark
niller
20 smith
scott
30 allen
blake
我的SQL 出现如下问题:
服务器: 消息 135,级别 15,状态 1,行 1
不能在 WHILE 语句的作用域之外使用 BREAK 语句。
怎么改进????????
回复列表 (共8个回复)
沙发
wdkshp [专家分:5490] 发布于 2006-10-25 09:16:00
分组 用group by
排序 用order by
板凳
地平线 [专家分:480] 发布于 2006-10-25 11:41:00
怎么改下?
3 楼
wdkshp [专家分:5490] 发布于 2006-10-25 12:56:00
select deptno,ename from emp group by deptno order by deptno
4 楼
地平线 [专家分:480] 发布于 2006-10-25 20:24:00
原数据是
entypedid a
23 22
23 11
34 10
45 23
34 30
要变成
23 22
11
34 10
30
45 23
我这样做:
select eqtypedid ,a
from eq
group by eqtypedid
order by eqtypedid
go
出现如下错误:
服务器: 消息 8120,级别 16,状态 1,行 1
列 'eq.a' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
5 楼
sjp2003 [专家分:1090] 发布于 2006-10-25 21:20:00
[quote]原数据是
entypedid a
23 22
23 11
34 10
45 23
34 30
要变成
23 22
11
34 10
30
45 23
我这样做:
select eqtypedid ,a
from eq
group by eqtypedid
order by eqtypedid
go
出现如下错误:
服务器: 消息 8120,级别 16,状态 1,行 1
列 'eq.a' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
[/quote]
你这样写SQL肯定是错的,因为如果你要搜寻的列,必须包含在group 里,也就是应该group by eqtypedid,a
不过,你要的结果是什么意思,那个后面是空值还是和上面的数据相同 ?
就是这里面的空格
23 22
11
什么意思?
6 楼
地平线 [专家分:480] 发布于 2006-10-26 11:45:00
其实就是 编程爱好者 数据库开发讨论区 置顶的 SQL语句编程手册(实用+练习) 学习资料里看到的。
所以就想试下
http://www.programfan.com/club/showbbs.asp?id=123198
“就是这里面的空格
23 22
11
什么意思?”
可能就是想 把重复的那个23 只写一个就行,
至于下面是不是空格,或是NULL,我也不知道???
还的请教知情者给予回答。
7 楼
sjp2003 [专家分:1090] 发布于 2006-10-26 12:36:00
置顶的是sql plus
据我所知 sql plus 是oracle中的直接对数据库使用sql语句的交互式操作,你在SQLSERVER中运行....
8 楼
无私地和别人交流 [专家分:2120] 发布于 2006-11-15 11:59:00
把a去掉
我来回复