SELECT OBJECTID, ESE_PRESSUR_ID, PRESSUR_NAME, CHECK_DATE, CHECK_TIME, SUPPLY_PRESSUR, SSV_PRESSUR, PRES_ID
FROM (
SELECT T.*
, ROW_NUMBER() OVER ( PARTITION BY ESE_PRESSUR_ID ORDER BY CHECK_DATE + CHECK_TIME ASC ) RN
FROM (SELECT OBJECTID, A.ESE_PRESSUR_ID, A.PRESSUR_NAME
, A.CHECK_DATE, A.CHECK_TIME, A.SUPPLY_PRESSUR, A.SSV_PRESSUR, A.PRES_ID
FROM
(SELECT
A.ESE_PRESSUR_ID, A.PRESSUR_NAME
, CHECK_DATE, CHECK_TIME, SUPPLY_PRESSUR, SSV_PRESSUR, PRES_ID
FROM XGR_PA_SCADA_PRESSURE_MST A
INNER JOIN XGR_PA_SCADA_PRESSURE_ARC B
ON A.ESE_PRESSUR_ID = B.ESE_PRESSUR_ID
WHERE ISNULL(MANAGE_AREA, '%') LIKE '%02%'
AND CHECK_DATE + ' ' + CHECK_TIME >= '2014/09/29 10:00'
AND CHECK_DATE + ' ' + CHECK_TIME <= '2014/10/08 10:00') A, FAC_PRES B
WHERE A.PRES_ID = B.PRES_ID) T
) WHERE RN = 1
현재 쿼리입니다..
이게 오라클에서 사용중이던 쿼리인데 제가 아는대로 바꿔서 돌려봤더니
서버 : 메시지 156, 수준 15, 상태 1, 줄 18
키워드 'WHERE' 근처의 구문이 잘못되었습니다.
라는 메시지가 나오네요..
마지막에 WHERE RN = 1 에서 오류가 나는건데..
구문에 문제가 있는건가요?
제가 MSSQL을 처음 접해봐서... 오라클에선 잘 돌아가는 쿼리입니다..
고수분들 답변 기다리겠습니다.
좋은하루 되세요.
Comment 1
-
처리짱
2014.10.08 19:09
1. 테이블을 괄호로 묶을때
select *
from (
select *
from temp
) as a
별칭을 주셔야 하고요
2. WHERE RN = 1
-> ROW_NUMBER() OVER ( PARTITION BY ESE_PRESSUR_ID ORDER BY CHECK_DATE + CHECK_TIME ASC ) = 1
로 바꾸시면 될듯요.