2017-11-29 12 views
0

일부 역 전파/데이터 분석을 수행하기 위해 신경망을 작성 중입니다.SQL - Select 문/저장 프로 시저에서 반환되는 데이터 정규화

저는 교육 목적으로 입력 데이터를 정규화하기 위해 노력하고 있습니다.

내 데이터 세트 중 하나에 유형 식별자가 포함되어 있으며 현재 8 가지 유형이 있습니다 (언제든지 변경 될 수 있음).

SelectContent에서 TypeId = 1이면 실제로 00000001을 반환하는 조건이 필요합니다. TypeId = 2 인 경우 00000011을 반환하고 싶습니다. 숫자의 길이는 유형 수를 나타냅니다. 1의 수는 TypeId를 나타냅니다.

이 접근 방법에 대한 제안 사항은 무엇입니까? 나는 유형의 수가 바뀔 수 있기 때문에 내가 제공 한 것보다 좀 더 냉엄 한 것을 선호 할 것이다.

SELECT TypeId = 
     CASE TypeId 
     WHEN 1 THEN 00000001 
     WHEN 2 THEN 00000011 
     WHEN 3 THEN 00000111 
     WHEN 4 THEN 00001111 
     END, 
    Name 
FROM dbo.Types 

답변

1
DECLARE @t TABLE (TypeId INT, Name VARCHAR(100)) 
INSERT INTO @t VALUES (1, 'Type1'), (2, 'Type2'), (3, 'Type3'), (10, 'Type10') 

SELECT REPLICATE('0', (SELECT MAX(TypeId) FROM @t) - TypeId) + REPLICATE('1', TypeId), Name 
FROM @t 

을 제공합니다 :

0000000001 Type1 
0000000011 Type2 
0000000111 Type3 
1111111111 Type10