【问题标题】:using MAx and group by in DB2在 DB2 中使用 MAx 和 group by
【发布时间】:2016-06-13 20:14:32
【问题描述】:

我正在 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 [SELECT - 0 行,0.000 秒] [错误代码:-206,SQL 状态:42703] DB2 SQL 错误:SQLCODE=-206,SQLSTATE=42703,SQLERRMC=DAT,驱动程序=3.50.152 ... 1 条语句执行,0 行受影响,执行/获取时间:0.000/0.000 秒 [0 成功,0 警告,1 错误]

有什么建议

【问题讨论】:

  • 旁注:(部分由于时间戳减法返回的相对间隔,)TIMESTAMPDIFF 返回一个估计。特别是,一旦您有一个月(至少 1 天)或年(5 或 6 天),该值就会关闭。

标签: db2


【解决方案1】:

您需要在GROUP BY 中包含所有非聚合列。目前尚不清楚您到底想要什么,但这至少应该解析并运行:

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;

【讨论】:

  • 它与您的建议一起运行,谢谢。但是它并没有得到正确的结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-20
  • 2012-10-30
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多