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 7117 게시물 읽기
No. 7117
필드 분할 문의 드립니다.
작성자
mestis
작성일
2018-03-16 17:01:12ⓒ
2018-03-16 17:05:05ⓜ
조회수
108

WITH work_t AS

(

SELECT '20180001'empno , '[2015-06-23] 경도 [2015-07-14] 상도 [2015-08-04] 겨 3/5 [2018-02-05] 켈로이드 [2018-02-19] 2/5 [2018-03-05] 3/5 ' as [text]

UNION ALL

SELECT '201800012', '[2015-06-23] 경도 [2015-07-14] 상도' as [text]

)

SELECT empno, [text]

from work_t

상위 내역을 조회 하면 아래와 같이 조회 되며 text는 [일자]와 내역으로 입력 되어 있습니다.

 

empno text

20180001 [2015-06-23] 경도 [2015-07-14] 상도 [2015-08-04] 겨 3/5 [2018-02-05] 켈로이드 [2018-02-19] 2/5 [2018-03-05] 3/5

20180012 [2015-06-23]경동 [2015-07-14] 상도

 

 

이러한 형태의 내역을 empno 값과 일자 Text별로 data를 sorting 하고 싶습니다.

 

ex)

WITH work_example AS

 

(

SELECT '20180001'empno , '[2015-06-23]' as [day], '경도 ' as [text]

UNION ALL

SELECT '20180001'empno , '[2015-06-21]' as [day], '상도 ' as [text]

UNION ALL

SELECT '20180001'empno , '[2015-06-22]' as [day], 'Test ' as [text]

UNION ALL

SELECT '20180001'empno , '[2015-06-24]' as [day], '경도 ' as [text]

)

 

SELECT empno, [day],[text]

 

from work_example

 

 

부탁 드립니다.

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

WITH work_t AS
(
SELECT '20180001'empno
     , '[2015-06-23] 경도 [2015-07-14] 상도 [2015-08-04] 겨 3/5 [2018-02-05] 켈로이드 [2018-02-19] 2/5 [2018-03-05] 3/5 ' AS [text]
 UNION ALL
SELECT '201800012', '[2015-06-23] 경도 [2015-07-14] 상도'
)
, work_example AS
(
SELECT empno
     , text
     , 1 lv
     , CHARINDEX('[', text, 1) x
     , CHARINDEX(']', text, 1) y
     , CHARINDEX('[', text, 2) z
  FROM (SELECT empno, text + '[' text FROM work_t) a
 UNION ALL
SELECT empno
     , text
     , lv + 1 lv
     , CHARINDEX('[', text, z) x
     , CHARINDEX(']', text, z) y
     , CHARINDEX('[', text, z + 1) z
  FROM work_example
 WHERE CHARINDEX('[', text, z + 1) > 0
)
SELECT empno
     , lv
     , SUBSTRING(text, x + 1, y - x - 1) day
     , LTRIM(RTRIM(SUBSTRING(text, y + 1, z - y - 1))) text
  FROM work_example
 ORDER BY empno, lv
;

마농(manon94)님이 2018-03-16 17:38:18에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
7120도움을 주시면 감사하겠습니다. [2]
고수님들
2018-04-12
39
7119행을 열로 어떻게 바꿀 수 있는지 여쭤 봅니다. [2]
왕초보왕초보
2018-04-11
42
7118컬럼별로 카운트 하는방법 알려주세요 [1]
민재영
2018-03-22
91
7117필드 분할 문의 드립니다. [1]
mestis
2018-03-16
108
7116postgreSQL 과 MSSQL Linked Server 연결 후 데이터 조회 시 문제
김민재
2018-03-14
113
7115TRUNCATE로 행 삭제> MDF 용량이 그대로네요.. [1]
이재후
2018-03-08
144
7114aws rds 의 mssql 동시저장 관련 [1]
재우니
2018-03-05
154
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2017 DSN, All rights reserved.
작업시간: 0.067초, 이곳 서비스는
	PostgreSQL v10.1로 자료를 관리합니다