MSSQL -> Postgresql 쿼리 질문.. 0 1 889

by 이명수 [SQL Query] mssql postgresql [2021.04.19 17:43:52]


안녕하세요, 저번 PostgreSQL 변환 때 해결 방안에 정말 감사드립니다..

다름 아니라 이번에도 MSSQL 쿼리문을 PostgreSQL 문으로 변환을 직접 해보았는데, 출력은 나오는데

convert(int,right(a.ModuleAndEventText,3))

이 부분을 제거하고 변환을 하였습니다..

추가적으로 수정해야 할 부분이 있을까요?

기존 MSSQL 쿼리문은 다음과 같습니다.


declare @time_start datetime
declare @time_end datetime
declare @temptable table(StartDate varchar(10),EndDate varchar(10), Connect_Count nvarchar(512))
declare @temptable2 table(StartDate varchar(10),EndDate varchar(10), Use_VM_Count nvarchar(512))
declare @i int
declare @day_start datetime
declare @cc int	

set @time_start='2021-01-01'  --조회 시작날짜
set @time_end='2021-12-11'  -- 조회 종료날짜


SELECT convert(varchar(10),a.Time,120) Date,
CASE WHEN DATALENGTH(a.ModuleAndEventText) = 184 then 
		convert(int,right(a.ModuleAndEventText,3))
	ELSE
		convert(int,right(a.ModuleAndEventText,2))
	END 'Concurrent Session'
from dbo.event_historical a
where a.EventType = 'BROKER_DAILY_MAX_CCU_USERS'
and Time between @time_start and @time_end
order by Date

 

PostgreSQL 쿼리문으로 변경 해 본 결과로는 다음과 같습니다.


SELECT TO_CHAR(a.time, 'yyyy-mm-dd') Connected_Date
     , COUNT(*) Concurrent_Session
FROM event_historical a
WHERE a.EventType = 'BROKER_DAILY_MAX_CCU_USERS'
   AND a.time      >= DATE '2021-01-01'
   AND a.time      <  DATE '2021-12-31' + 1
GROUP BY TO_CHAR(a.time, 'yyyy-mm-dd')
ORDER BY Connected_Date
;
by 마농 [2021.04.20 10:29:30]
SELECT TO_CHAR(a.time, 'yyyy-mm-dd') Connected_Date
     , CASE WHEN LENGTH(a.ModuleAndEventText) = 184
            THEN RIGHT(a.ModuleAndEventText, 3)::INT
            ELSE RIGHT(a.ModuleAndEventText, 2)::INT
             END Concurrent_Session
  FROM event_historical a
 WHERE a.EventType  = 'BROKER_DAILY_MAX_CCU_USERS'
   AND a.time      >= DATE '2021-01-01'
   AND a.time      <  DATE '2021-12-31' + 1
 ORDER BY Connected_Date
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입