SQL 질문과 답변 게시판
^^* 뭐 말씀하시는지 잘 모르겠는뎅~
DECLARE @TEMP TABLE (
NUM INT
, TXT VARCHAR(10)
)
INSERT INTO @TEMP (NUM, TXT) VALUES ( 1, 'ABC')
INSERT INTO @TEMP (NUM, TXT) VALUES ( 2, 'DEF')
SELECT MAX(CASE WHEN NUM = 1 THEN TXT ELSE NULL END )
+ CHAR(13) + CHAR(10)
+ MAX(CASE WHEN NUM = 2 THEN TXT ELSE NULL END )
FROM @TEMP
SSMS 상으로는 <br>이 보이지는 않는데, 아마 프로그램이나 웹에서 보여줄 때에는 <br>로 보여질꺼 같아요.
Coalesce 함수 설명은 BOL 참조 하시고
아래 내용 이해 하시면 금방 이해 하실것 같습니다.
DECLARE @str VARCHAR(100) /* SELECT NULL + ',' 봄 각인 : 일단 ISNULL 함수와 비슷 합니다.
SELECT @str
NULL
*/
/*
NULL
*/
SELECT Coalesce(NULL + ',','봄')
/*
봄
*/
SELECT Coalesce(NULL + ',',NULL,'봄')
/*
봄
*/
SELECT Coalesce(NULL + ',',NULL,NULL,'봄')
/*
봄
*/
SELECT Coalesce(NULL + ',',NULL,'봄',NULL,'여름',NULL,'가을',NULL,'겨울')
/*
*/
Coalesce 함수는 널이아닌 최초(첫번째)의 값을 리턴하는 명령어입니다 .
Coalesce 안쓰고 하신다면
@str 초기화 해주어야하고 필요에 따라서는 앞에 붙은 , 도 제게해야하는 부분이 생기게 됩니다.
이걸 Coalesce 함수를 이용하면 이런 작업없이 가능하게 됩니다..
DECLARE @str VARCHAR(100)
set @str= ''
SELECT @str = @str + ',' + Val FROM 가족
SELECT substring(@str,2,len(@str))
GO


USE tempdb
GO
--테스트자료만들기
CREATE TABLE 가족 (id INT, Val VARCHAR(10))
INSERT 가족 VALUES (1,'한수')
INSERT 가족 VALUES (2,'지우')
INSERT 가족 VALUES (3,'선우')
INSERT 가족 VALUES (4,'숙')
INSERT 가족 VALUES (5,'찬우')
-- 데이터확인
SELECT * FROM 가족
GO
DECLARE @str VARCHAR(100)
SELECT @str= COALESCE(@str+',' , '') + Val FROM 가족
SELECT @str
GO