Sql 带有GROUPBY子句的Db2 select查询抛出错误?
我想得到Sql 带有GROUPBY子句的Db2 select查询抛出错误?,sql,group-by,db2,Sql,Group By,Db2,我想得到SERIAL_NUM和EMP_NAME的不同值,但是下面的查询抛出了一个错误 SELECT SERIAL_NUM,EMP_NAME,NOTESID FROM DB2INST1.EMP_HC GROUP BY SERIAL_NUM,EMP_NAME,NOTESID HAVING FUNC_VP ='Bob ' AND VICE_PRES ='Bob' AND DIRECTOR ='Michael' AND THIRD_LINE ='Linda ' 错误 db2s
SERIAL_NUM
和EMP_NAME
的不同值,但是下面的查询抛出了一个错误
SELECT SERIAL_NUM,EMP_NAME,NOTESID FROM DB2INST1.EMP_HC
GROUP BY
SERIAL_NUM,EMP_NAME,NOTESID
HAVING
FUNC_VP ='Bob ' AND
VICE_PRES ='Bob' AND
DIRECTOR ='Michael' AND
THIRD_LINE ='Linda '
错误
db2sql错误:SQLCODE=-119,SQLSTATE=42803,SQLERRMC=FUNC_VP,DRIVER=3.63.123
您不能在没有出现在GROUPBY子句中的字段上使用HAVING,因为该字段在一个组中可能有多个值
您可能想做的是使用plainwhere筛选出感兴趣的行,然后按分组
SELECT SERIAL_NUM,EMP_NAME,NOTESID
FROM DB2INST1.EMP_HC
WHERE FUNC_VP ='Bob '
AND VICE_PRES ='Bob'
AND DIRECTOR ='Michael'
AND THIRD_LINE ='Linda '
GROUP BY SERIAL_NUM,EMP_NAME,NOTESID
GROUP BY SERIAL_NUM,EMP_NAME,NOTESID,FUNC_VP,VICE_PRES,DIRECTOR,THIRD_LINE
…或者,如果出于某种原因需要使用have,则需要将FUNC_VP、副总裁、主管和第三行字段添加到组中
SELECT SERIAL_NUM,EMP_NAME,NOTESID
FROM DB2INST1.EMP_HC
WHERE FUNC_VP ='Bob '
AND VICE_PRES ='Bob'
AND DIRECTOR ='Michael'
AND THIRD_LINE ='Linda '
GROUP BY SERIAL_NUM,EMP_NAME,NOTESID
GROUP BY SERIAL_NUM,EMP_NAME,NOTESID,FUNC_VP,VICE_PRES,DIRECTOR,THIRD_LINE
如果需要“序列号和EMP\u名称的不同值”,则需要告诉数据库如果存在多个SERIAL\u-NUM
和EMP\u-NAME的组合,则选择哪个notesid
。如果您不关心您得到的是哪个notesid
,您可以使用min()
但是,当我使用min(notesid)时,由于resultSet.getString(“notesid”);当我尝试遍历结果集时引发错误?@user3398326:您是否像我那样使用列别名?(作为notesid
)