2013-08-24 62 views
0

我正在使用IBM Cognos Framework Manager来创建报告,并在此报告中我们需要隔离最后一行,但这不是我的问题。我正在尝试使用GROUP BY子句来实现它,无论我做什么,它总是会抛出一个错误。DB2 SQL Group通过声明

表被命名为THESIS_ADVISER有以下的列:

 
THESIS_ID 
FACULTY_ID 
START_SY 
START_TERM 

为什么我的group by子句不行?

Select * 
From SAMPLE.THESIS_ADVISER THESIS_ADVISER 
Group by 
    THESIS_ADVISER.THESIS_ID 

错误产生:执行操作 'sqlPrepareWithOptions' 的状态= RQP-DEF-0177时发生错误 ' - 9'。 UDA-SQL-0107在“准备”操作过程中发生了一般性异常。 [IBM] [CLI驱动程序] [DB2/NT] SQL0119N在SELECT子句,HAVING子句或ORDER BY子句中指定的“THESIS_ID”开始的表达式不在GROUP BY子句中指定,或者在SELECT子句中, HAVING子句或具有列函数且没有GROUP BY子句的ORDER BY子句被指定。 SQLSTATE = 42803

+0

你的小组没有任何意义。你究竟在努力实现什么? –

回答

1

错误消息说明了这一切:您必须在SELECT列表中包含您在GROUP BY子句中具有的所有相同列,并且可能还有一些集合函数。

1

GROUP BY子句正在寻找一组列以进行分组,以便在一个或多个剩余列上执行某些聚合函数。例如,如果您想选择给定部门中给定用户的最近交易日期,那么您将执行MAX(交易日期)...... GROUP BY员工,部门

如果我理解正确,您正试图将属于某个THESIS_ID的行保留在一起。如果是这种情况,请为THESIS_ID使用ORDER BY子句。祝你好运。