mssql select 안에서 만든 컬럼 바로 사용하는 방법이 있나요?

조회수 486회
SELECT D.dev_serial
    ,D.dev_name
    /* location */
    ,case when charIndex(']', dbo.funcSplit(dbo.funcSplit(D.dev_name, '(', 1) , '_', 3)) > 0 then dbo.funcSplit(dbo.funcSplit(dbo.funcSplit(D.dev_name, '(', 1) , '_', 3), ']', 2)
          when charIndex(']', dbo.funcSplit(dbo.funcSplit(D.dev_name, '(', 1) , '_', 3)) = 0 then dbo.funcSplit(dbo.funcSplit(D.dev_name, '(', 1) , '_', 3)
          when len(dbo.funcSplit(dbo.funcSplit(D.dev_name, '(', 1), '-', 2)) < 5 then dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), '(', 1)
          when dbo.funcSplit(dbo.funcSplit(D.dev_name, '(', 1) , '_', 2) = NULL then D.dev_name
          when dbo.funcSplit(dbo.funcSplit(D.dev_name, '(', 1) , '_', 3) = NULL then dbo.funcSplit(dbo.funcSplit(D.dev_name, '(', 1) , '_', 2)
          else D.dev_name end as location
    /* location_code */
    ,case when len(dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), ' ', 1)) = 2 then dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), ' ', 1)
          when len(dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), ' ', 1)) = 3 then dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), ' ', 1)
          when len(dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), ' ', 1)) = 4 then dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), ' ', 1)
          when len(dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), ' ', 1)) = 6 then dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), ' ', 1)
          when len(dbo.funcSplit(dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), ' ', 1), ']', 2)) > 3 then left(dbo.funcSplit(dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), ' ', 1), ']', 2), 3)
          when CHARINDEX(']', dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), ' ', 1)) > 0 then dbo.funcSplit(dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), ' ', 1), ']', 2)
          when dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), ' ', 1) = NULL then D.dev_name
          when len(dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), ' ', 1)) = 0  then dbo.funcSplit(D.dev_name, ' ', 2) 
          when len(dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), ' ', 1)) > 18 then left(dbo.funcSplit(dbo.funcSplit(D.dev_name, '_', 3), ' ', 1),3)
          else D.dev_name end as location_code 

FROM cheonan01.vms_device D

이렇게 작성했을 때 아래 사진과 같은 구조가 생성 됩니다. 그런데 location_code들의 정보를 영문으로 번역한 값을 넣기 위해서 select 문 안에서 바로 location_code를 사용해서 만약 '반포동'일 때 'Banpo-dong'이렇게 변환한 정보를 location_code_eng라는 컬럼에 쌓고싶습니다.

가능한 방법이 있을까요?

이미지

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)