2017-07-06 6 views
-1

Ich versuche, die durchschnittliche Anzahl der Transaktionen für jeden Produktschlüssel für die angegebenen Zeitschlüssel zu finden. Dies ist die Abfrage in DB2.SQL Fehler in DB2

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); 

Dies ist der Fehler, den ich für die obige Abfrage erhalte. Ich bin mir nicht sicher, was schief geht. Dies ist das erste Mal, dass ich DB2 abfrage. Irgendwelche Vorschläge wären großartig.

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

Sie vermissen ein Komma. – mustaccio

Antwort

1

Die Art und Weise beschreiben, was Sie wollen, sollten Sie die having zu einer where Klausel bewegen und die Zeit Schlüssel aus dem group by entfernen:

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; 

Ich bin mir nicht sicher, ob das Ihr behebt Problem.