안녕하세요, 저번 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 ;
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 ;