2017-07-06 63 views
-1

我正在尝试查找指定时间键的每个产品密钥的平均事务数。这是DB2中的查询。DB2中的SQL错误

select  
     act.product_key 
     avg(act.cnt) as avg_transaction 
    from tb1 as ca 
    inner join tb2 as act 
    on ca.base_key = act.base_key and act.time = ca.time and act.product_key = ca.product_key 
    group by act.product_key, act.time 
    having act.time in (16476,16516, 16556,16596, 16636,16676,16716, 16756, 16796,16836,16876,16916,16956); 

这是我得到的上述查询错误。我不确定发生了什么问题,这是我第一次查询DB2。任何建议都会很棒。

Error: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=(;act.product_key 
     avg;,, DRIVER=3.66.46 
    SQLState: 42601 
    ErrorCode: -104 
    Error: DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-104;42601;(|act.product_key 
     avg|,, DRIVER=3.66.46 
    SQLState: 56098 
    ErrorCode: -727 
+0

您错过了逗号。 – mustaccio

回答

1

你描述你想要的东西的样子,你应该在having移动到where条款并从group by时间关键:

select act.product_key, avg(act.cnt) as avg_transaction 
from tb1 ca inner join 
     tb2 act 
     on ca.base_key = act.base_key and act.time = ca.time and act.product_key = ca.product_key 
where act.time in (16476, 16516, 16556,16596, 16636, 16676, 16716, 16756, 16796, 16836, 16876, 16916, 16956) 
group by act.product_key; 

我不知道这是否会解决您的问题。