설문조사
PostgreSQL/PPAS 관련 듣고 싶은 교육은


총 게시물 187건, 최근 0 건
   

MSSQL -> Postgre 쿼리 변환 질문입니다

글쓴이 : 명수 날짜 : 2021-04-09 (금) 16:06 조회 : 5057
안녕하세요,

MSSQL 쿼리문을 실무에서 사용하다 동일한 쿼리문을 Postgresql 쿼리문으로 바꿔 사용하려 합니다.

문법이 조금 다른 관계로 검색해보면서 쿼리문을 수정해보았는데, 잘 되지 않아서 도움을 요청드립니다.

감사합니다.

(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='2020-01-01'  --조회 시작날짜
set @time_end='2020-12-31'  -- 조회 종료날짜

------- 1. 일별 접속 횟수 Query----------------------------------------------
set @i=DATEPART(dd,@time_start)
set @day_start=@time_start

while @i<=DATEdiff(d,@time_start,@time_end+1)
begin

-- 데이터 조회
    SELECT distinct @cc=count(ed.StrValue)
    FROM dbo.event_historical AS ev,
    dbo.event_data_historical AS ed
    WHERE ev.EventID = ed.EventID
    And ed.Name='UserDisplayName'
    and ev.EventType='BROKER_USERLOGGEDIN' 
    and ev.Time between @day_start and @day_start+1

-- 조회된 데이터 임시테이블에 Insert
    insert into @temptable
        values(convert(varchar(10),@day_start,120)
        ,convert(varchar(10),@day_start+1,120)
        ,@cc)
   
    set @day_start=dateadd(d,1,@day_start)
    set @i=@i+1
   
end

set @day_start=''
set @i=0
set @cc=0

-- Insert된 임시 테이블 조회
select *
from @temptable

------- 2. 일별 사용된 VM 수 Query----------------------------------------------
set @i=DATEPART(dd,@time_start)
set @day_start=@time_start
while @i<=DATEdiff(d,@time_start,@time_end+1)
begin

-- 데이터 조회
    select @cc = COUNT(*)
    from
    (
    SELECT distinct ed.StrValue, ev.Node
    FROM dbo.event_historical AS ev
    LEFT OUTER JOIN dbo.event_data_historical AS ed
    ON ev.EventID = ed.EventID
    WHERE (ev.EventType='AGENT_PENDING' or ev.EventType='AGENT_DISCONNECTED' or ev.EventType='AGENT_ENDED')
    and ed.Name='UserDisplayName'
    and ev.Time between @day_start and @day_start+1
    )a
   
-- 조회된 데이터 임시테이블에 Insert
    insert into @temptable2
        values(convert(varchar(10),@day_start,120)
        ,convert(varchar(10),@day_start+1,120)
        ,@cc)
   
    set @day_start=dateadd(d,1,@day_start)
    set @i=@i+1
   
end

set @day_start=''
set @i=0
set @cc=0

-- Insert된 임시 테이블 조회
select *
from @temptable2

   

postgresdba.com