콤마로 구분되어 있는 공통코드 조인 방법을 알고싶습니다. 0 1 547

by 상똥이 [2020.04.02 16:24:31]


안녕하세요. 

현재 데이터베이스는 SQL-Sever를 사용하고 있습니다.

목록을 출력해야 되는데 공통코드를 조인해서 보여주어야 합니다.

한가지 문제가 있는데 공통코드 컬럼이 4060003,4060005 이렇게 저장되는 컬럼이 있습니다.

제가 원하는 결과는 사과,배 이런식으로 조인해서 보여주고 싶은어떻게 해야될지 감이 안옵니다.

공통코드 테이블의  CommonID와 샘플 테이블의 Name을 조인해서 목록을 보여주어야합니다.

답변 부탁드리겟습니다.

 

CREATE TABLE [dbo].[CommonCode](
    [CommonID] [int] NOT NULL,
    [Name] [nvarchar](50) NOT NULL,
    [CommonTypeID] [int] NULL,
    [UseYN] [int] NOT NULL)

 

CREATE TABLE [dbo].[Sample](
    [Seq] [int] NOT NULL,
    [Name] [varchar(100)] NULL,
    [UseYN] [int] NOT NULL)

 

 

 

 

by 마농 [2020.04.03 10:04:40]
WITH CommonCode AS
(
SELECT 4060003 CommonID, '사과' Name, 1 UseYN
UNION ALL SELECT 4060005, '배', 1
)
, Sample AS
(
SELECT 1 Seq, '4060003,4060005' Name, 1 UseYN
)
SELECT a.Seq
     , a.Name
     , STRING_AGG(c.Name, ',') WITHIN GROUP(ORDER BY
       CHARINDEX(CONCAT(',', c.CommonID, ','), CONCAT(',', a.Name, ',')) ) names
  FROM Sample a
 INNER JOIN CommonCode c
    ON CHARINDEX(CONCAT(',', c.CommonID, ','), CONCAT(',', a.Name, ',')) > 0
 WHERE a.UseYN = 1
   AND c.UseYN = 1
 GROUP BY a.Seq, a.Name
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입