database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 10240 게시물 읽기
No. 10240
MSSQL -> Postgre 쿼리 변환 질문입니다
작성자
명수
작성일
2021-04-09 16:11ⓒ
2021-04-10 13:38ⓜ
조회수
1,611

안녕하세요,


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

 

이 글에 대한 댓글이 총 1건 있습니다.

tsql 구문이네요. 딱 tsql 프로시져를 올려두고, 이걸 plpgsql 로 바꿔주세요.

라고 하시면 원하는 답을 찾기 힘들겁니다.


일단, PostgreSQL의 plpgsql 프로시셔 언어를 약간을 공부하고 나서 (금방 하실거에요)


이렇게 plpgsql로 바꿔봤는데, 이런 문제가 있는데, 답을 못찾겠다고 글을 써야 답을 쉽게 찾을겁니다.


 

김상기(ioseph)님이 2021-04-10 21:15에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
10243awr에서와 같이 buffer gets 는 어떻게 확인하나요? [4]
cella
2021-04-15
1538
10242template0의 age 오버 [9]
종관
2021-04-12
2117
10241세션 wait_event에 subtranscontrollock 이벤트는 어떤 상황일때 발생하는가요? [3]
전석
2021-04-09
1987
10240MSSQL -> Postgre 쿼리 변환 질문입니다 [1]
명수
2021-04-09
1611
10239copy from encoding 질문 [1]
박종호
2021-03-26
2555
10238postgreSQL 버전별 속도차이 [2]
조민호
2021-03-23
1950
10236copy from 명령어 관련 질문 [1]
cella
2021-03-18
1784
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다