首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MAX(),GROUP BY errors

MAX(),GROUP BY errors
EN

Stack Overflow用户
提问于 2012-08-23 01:07:32
回答 1查看 3.5K关注 0票数 0

在DB2 V9 Z/Os上

以下三行的查询。

代码语言:javascript
复制
SELECT J01_REGION, I20_MMS_NO, I20_CONSUMER_ID, I21_CONSUMER_ID, I21_CASE_ID,
I42_FIN_MGR_PROV, J01_PROVIDER, I21_CASE_OPEN_DT, I42_FM_BEG_DT
FROM SERDB.I20_CONSUMER_T INNER JOIN SERDB.I21_CONS_CASE_T ON I20_CONSUMER_ID = 
I21_CONSUMER_ID
INNER JOIN SERDB.I42_FIN_MGR_T ON I21_CASE_ID = I42_CASE_ID 
INNER JOIN SERDB.J01_PROVIDER_T ON I42_FIN_MGR_PROV = J01_PROVIDER
WHERE J01_REGION = 2
AND I20_CONSUMER_ID = 96603

我希望查询通过使用I21_CASE_OPEN_DT和I42_FM_BEG_DT的最大值只返回一行。如果我使用:

代码语言:javascript
复制
SELECT J01_REGION, I20_MMS_NO, I20_CONSUMER_ID, I21_CONSUMER_ID, I21_CASE_ID,  MAX 
(I21_CASE_OPEN_DT), MAX(I42_FM_BEG_DT), I42_FIN_MGR_PROV, J01_PROVIDER
FROM SERDB.I20_CONSUMER_T INNER JOIN SERDB.I21_CONS_CASE_T ON I20_CONSUMER_ID = 
I21_CONSUMER_ID 
INNER JOIN SERDB.I42_FIN_MGR_T ON I21_CASE_ID = I42_CASE_ID 
INNER JOIN SERDB.J01_PROVIDER_T ON I42_FIN_MGR_PROV = J01_PROVIDER
WHERE J01_REGION = 2
AND I20_CONSUMER_ID = 96603;

I receive: SQL0122N没有GROUP BY子句的SELECT语句在SELECT子句中包含列名或表达式以及列函数,或者SELECT子句中包含列名或表达式,而GROUP BY子句中不包含列名或表达式。SQLSTATE=42803

如果我使用:

代码语言:javascript
复制
SELECT J01_REGION, I20_MMS_NO, I20_CONSUMER_ID, I21_CONSUMER_ID, I21_CASE_ID,
I42_FIN_MGR_PROV, J01_PROVIDER, I21_CASE_OPEN_DT, I42_FM_BEG_DT
FROM SERDB.I20_CONSUMER_T INNER JOIN SERDB.I21_CONS_CASE_T ON I20_CONSUMER_ID = 
I21_CONSUMER_ID 
INNER JOIN SERDB.I42_FIN_MGR_T ON I21_CASE_ID = I42_CASE_ID 
INNER JOIN SERDB.J01_PROVIDER_T ON I42_FIN_MGR_PROV =  J01_PROVIDER
WHERE J01_REGION = 2
AND I20_CONSUMER_ID = 96603
AND MAX(I21_CASE_OPEN_DT)
AND MAX(I42_FM_BEG_DT);

我收到: SQL0199N保留字“SQL0199N”后面的"AND“的使用是无效的。预期的标记可能包括:“微秒、微秒、秒、分钟、小时”。SQLSTATE=42601

有没有人建议我还能做些什么?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-23 01:16:55

第二个错误告诉您需要知道的所有内容:

不带GROUP BY子句的SELECT语句在SELECT子句中包含列名或表达式以及列函数,或者列名或表达式包含在SELECT子句中但不包含在GROUP BY子句中

如果您使用聚合(MAXMIN等)您必须按select语句中的所有其他字段进行分组,但您尚未这样做。

使用第二个查询,并添加GROUP BY子句将得到以下结果:

代码语言:javascript
复制
SELECT J01_REGION, I20_MMS_NO, I20_CONSUMER_ID, I21_CONSUMER_ID, I21_CASE_ID,  
    MAX (I21_CASE_OPEN_DT), MAX(I42_FM_BEG_DT), I42_FIN_MGR_PROV, J01_PROVIDER
FROM SERDB.I20_CONSUMER_T INNER JOIN SERDB.I21_CONS_CASE_T ON I20_CONSUMER_ID = 
I21_CONSUMER_ID 
INNER JOIN SERDB.I42_FIN_MGR_T ON I21_CASE_ID = I42_CASE_ID 
INNER JOIN SERDB.J01_PROVIDER_T ON I42_FIN_MGR_PROV = J01_PROVIDER
WHERE J01_REGION = 2
    AND I20_CONSUMER_ID = 96603
GROUP BY J01_REGION, I20_MMS_NO, I20_CONSUMER_ID, I21_CONSUMER_ID, I21_CASE_ID,
    I42_FIN_MGR_PROV, J01_PROVIDER;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12078098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档