在DB2中使用MAx和GROUPBY
我正在DB2中执行下面的查询在DB2中使用MAx和GROUPBY,db2,Db2,我正在DB2中执行下面的查询 select SOURCE1 , PLANT1, max(BEGIN_TIMESTAMP) as dat , END_TIMESTAMP, TIMESTAMPDIFF(2,CAST((END_TIMESTAMP - BEGIN_TIMESTAMP) AS CHAR(22))) from tab1 group by dat 然而,我得到了这个错误: 2:01:01[选择-0行,0.000秒][错误代码:-206,SQL状态:42703]DB2 S
select SOURCE1 , PLANT1, max(BEGIN_TIMESTAMP) as dat , END_TIMESTAMP,
TIMESTAMPDIFF(2,CAST((END_TIMESTAMP - BEGIN_TIMESTAMP) AS CHAR(22)))
from tab1
group by dat
然而,我得到了这个错误:
2:01:01[选择-0行,0.000秒][错误代码:-206,SQL状态:42703]DB2 SQL错误:SQLCODE=-206,SQLSTATE=42703,SQLERRMC=DAT,DRIVER=3.50.152
... 执行1条语句,影响0行,执行/获取时间:0.000/0.000秒[0成功,0警告,1错误]
有什么想法吗?您需要在
分组中包含所有未聚合的列。目前尚不清楚您到底想要什么,但至少应该解析并运行:
select SOURCE1, PLANT1, max(BEGIN_TIMESTAMP) as dat , END_TIMESTAMP,
TIMESTAMPDIFF(2, CAST((END_TIMESTAMP - BEGIN_TIMESTAMP) AS CHAR(22)))
from tab1
group by SOURCE1, PLANT1, END_TIMESTAMP;
这是你的建议,谢谢。但是,它没有转换正确的结果侧注:(部分原因是时间戳减法返回的相对间隔,)TIMESTAMPDIFF
返回一个估计值。特别是,当您有一个月(至少1天)或一年(5或6天)时,该值将被禁用。