2012-11-29 3 views
2

이상한 구문 오류가 발생했습니다. 해결 방법은 plz입니다. 당신은 코드에서 볼 수 있듯이SQL 코드에서 오류가 발생했습니다.

WITH A as (
SELECT ambtemp, 
     date_trunc('hour', dt)+ 
     CASE WHEN date_part('minute', dt) >= 30 
      THEN interval '30 minutes' 
      ELSE interval '0 minutes' 
     END as t 
FROM temm), 

B as(
SELECT ambtemp,t, 

     max(ambtemp::float(23)) OVER (PARTITION BY t) as max_temp, 
     min(ambtemp::float(23)) OVER (PARTITION BY t) as min_temp 
FROM A), 


H AS (
SELECT *  
FROM B 
WHERE (max_temp - min_temp) <= 0.2) 

UPDATE temm 
SET ambtemp = (NULL) 
WHERE dt IN H 

는 모든 코드를 제외하고 제대로 실행 "WHERE H IN DT"나는 내가 그러나 나는 다음과 같은 오류에 직면 코드의 존재에서이 부분의 코드 실행을 무시 때 :

ERROR: syntax error at or near "H" 
LINE 25: WHERE dt IN H 
        ^
+0

일반적으로, 나는 좋을 것 'WHERE DT IN'(H SELECT * FROM), 그러나 H 여러 열이 있기 때문에이 작동하지 않습니다. 너 뭐하려고하는거야? –

+0

@MarceloCantos, YEs, 오류 : 오류 : 하위 쿼리에 너무 많은 열이 있습니다. 줄 25 : 어디에서 dt 입력 (선택 * FROM H) –

+0

당신이 무엇을하려고하는지 잘 모르는 경우에는 당신을 도울 수 없습니다. –

답변

1

이 시도 :

UPDATE temm 
SET ambtemp = (NULL) 
WHERE dt IN (SELECT ambtemp FROM H) 
관련 문제