回 帖 发 新 帖 刷新版面

主题:控制记录显示分组顺序

控制记录显示分组顺序  
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个回复)

沙发

分组 用group by
排序 用order by

板凳


 
怎么改下?

3 楼

select deptno,ename  from emp group by deptno order by deptno

4 楼

原数据是
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 楼

[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 楼

其实就是 编程爱好者  数据库开发讨论区   置顶的  SQL语句编程手册(实用+练习) 学习资料里看到的。

所以就想试下
http://www.programfan.com/club/showbbs.asp?id=123198

“就是这里面的空格 
23           22
             11

 什么意思?”


可能就是想 把重复的那个23 只写一个就行,
至于下面是不是空格,或是NULL,我也不知道???
还的请教知情者给予回答。

7 楼

置顶的是sql plus
 据我所知 sql   plus   是oracle中的直接对数据库使用sql语句的交互式操作,你在SQLSERVER中运行.... 

8 楼

把a去掉

我来回复

您尚未登录,请登录后再回复。点此登录或注册