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
운영게시판
최근게시물
MS-SQL Q&A 7180 게시물 읽기
No. 7180
데이터 변경이력 조회 쿼리 문의
작성자
k62511(k62511)
작성일
2019-08-27 12:18
조회수
1,920

안녕하세요 데이터 변경 이력 조회에 관한 쿼리를 짜려고하는데 도통 어떤식으로 짜야할지 모르겠네요..

DB버전은 MS-SQL 2016을 사용중이구요

차수 컬럼1 컬럼2 컬럼3
0 테스트1 테스트2 테스트3
1 테스트1 테스트2 테스트4
2 테스트2 테스트2 테스트4
3 테스트2 테스트5 테스트4

 

위와 같이 테이블에 데이터가 있을경우에 0번차수부터 마지막차수까지 데이터 비교를 하여 컬럼명이랑 변경된 데이터 내역을 추출하고 싶습니다.

예를들어 각 차수마다 어떤컬럼의 어떤값이 변경되었는지를 추출시키고 싶은데요 아래 표와 같은 방식으로 추출을 하고싶은데 어떤식으로 쿼리를 짜야할지 도통 모르겠네요..

고수분들의 도움 부탁드리겠습니다..

변경차수 컬럼명 변경전 변경후
1 컬럼3 테스트3 테스트4
2 컬럼1 테스트1 테스트2
3 컬럼2 테스트2 테스트5

 

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

한 차수에 하나의 값만 변경되나요?
여러 값이 동시에 변경되는 경우는 없는지?

마농(manon94)님이 2019-08-27 15:44에 작성한 댓글입니다.

WITH t AS
(
SELECT 1 id, 0 seq, 'test1' c1, 'test2' c2, 'test3' c3
UNION ALL SELECT 1, 1, 'test1', 'test2', 'test4'
UNION ALL SELECT 1, 2, 'test2', 'test2', 'test4'
UNION ALL SELECT 1, 3, 'test2', 'test5', 'test4'
)
SELECT *
  FROM (SELECT id, seq, gb
             , LAG(aft) OVER(PARTITION BY id, gb ORDER BY seq) bef
             , aft
          FROM t
         UNPIVOT (aft FOR gb IN (c1, c2, c3)) a
        ) a
 WHERE bef != aft
 ORDER BY id, seq
;

마농(manon94)님이 2019-08-28 10:24에 작성한 댓글입니다.

정말 감사합니다, 마농님

여러값이 변경되는경우에도 동일하게 작동하는군요

역시.. 항상 많이 배우고 가는것 같습니다!

k62511(k62511)님이 2019-09-05 15:10에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
7184mssql 판매 관련해서
박재헌
2019-09-06
1690
7183[쿼리문의] 1초단위 데이터를 5초간격 조회. [2]
영일
2019-09-02
1905
7181SQL 조건 간소화 [2]
ohyouknow
2019-08-28
1785
7180데이터 변경이력 조회 쿼리 문의 [3]
k62511
2019-08-27
1920
7179SQL 갼소화 [2]
ohyouknow
2019-08-27
1859
7178JDBC에서 executeBatch()를 사용해서 데이터를 INSERT할 경우
권기혁
2019-08-19
1779
7177Restore 오류 관련 해결 방법 문의 [2]
박판규
2019-08-01
1872
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다