2014-07-17 2 views
0

여기에 작은 문제로 고민하고 있습니다. I는 4 열

여러 열 이름을 1 열로 연결 SQL

Column1 | Column2 | Column3 | Column4 
NULL.........NULL.........NULL.........NULL 
ABC..........NULL..........XYZ...........NULL 


열이 테이블을 1,2- & 3 어떤 값 또는 널 (null)을 가질 수 column4 인 column1,2 중 또는 3 널되지 않을 때
NULL, 해당 열 이름으로 column4를 업데이트해야합니다. 나는

Column1 | Column2 | Column3 | Column4 
NULL.........NULL.........NULL.........NULL 
ABC..........NULL..........XYZ...........Column1,Column3 


사람이 나는이 결과를 달성 할 수있는 방법 나를 인도 할 수 다음과 같은 결과를 기대하고있다.
도움을 주시면 감사하겠습니다. 미리 감사드립니다.

+0

죄송합니다! SQLServer에서 시도 중입니다 –

+2

왜 데이터베이스에서이 작업을 수행합니까? 프레젠테이션 기능인 것처럼 보이는 것을 비정규 화합니다. 설명하는 논리적 작업의 종류는 클라이언트 측에서 수행해야하며 UI 또는 보고서와 같은 프레젠테이션의 경우에만 수행해야합니다. db에서 비정규 화는 일반적으로 성능상의 이유로 만 수행됩니다. 게다가 .NET, Java 및 기타 클래스 라이브러리에는 이러한 종류의 논리를 훨씬 쉽게 구현할 수있는 클래스가 내장되어 있습니다. –

+0

'GROUP_CONCAT'과 비슷한 것을 원한다면'STUFF()'를 살펴보십시오. 이 [링크] (http://social.msdn.microsoft.com/Forums/sqlserver/en-US/f09d4166-2030-41fe-b86e-392fbc94db53/tsql-equivalent-for-groupconcat-function) 도움이됩니다. – Zane

답변

2

null 값을 테스트하고 null이 아닐 때 열 이름을 반환하는 경우를 사용하십시오. 문자열에있는 첫 번째 쉼표를 제거하는 것이 좋습니다.

update YourTable 
set Column4 = stuff(case when Column1 is not null then ',Column1' else '' end + 
        case when Column2 is not null then ',Column2' else '' end + 
        case when Column3 is not null then ',Column3' else '' end, 1, 1, '') 

SQL Fiddle

+0

감사합니다. 매력 작품처럼! –

관련 문제