앞서 질문이 구체적이지 않아서 답변이 없는것 같아서 다시 올립니다. ㅜㅜ
예)
아래와 같은 문장을 쿼리로 불러옵니다.
Microsoft SQL Server와 관련된 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나,
그런데 조회테이블에 폭이 지정되어 있습니다.
그래서 이렇게 조회되어야 합니다.
Microsoft SQL Server와 관련된 질문과 답변을 올리는 게시판입니다.
궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 <-- 단어가 잘려서는 안되기에 다음줄로 넘어갔습니다
받으실수 있습니다. 문의를 하실때에는 최근 작업하신 특이
사항이나,
프로그램으로 할 수 없는 형편이라 쿼리로만 처리해야 하는데... 어찌해야 할지 난감해서요
Comment 1
-
건우아빠
2014.10.04 22:23
정확히 원하는 형태로는 쉽지 않지만 비슷하게는 구현 가능은 합니다...... 나머진 직접해보세요...
몇가지 쿼리를 짜집기 한것입니다.. 각각 링크를 걸었기에 참고 하시면 좋으실듯 합니다..
;with
res1 as
(
select 1 id, 'Microsoft SQL Server와 관련된 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나,' txt
) ,
--- http://www.sqler.com/140487 참고(민석님)
res2 as (
SELECT row_number() over (order by b.s) idx , A.id, SUBSTRING(A.txt,B.S,B.E - B.S) buk , DATALENGTH(SUBSTRING(A.txt,B.S,B.E - B.S)) buk_len
FROM res1 A
CROSS APPLY (
SELECT TOP (2047) NUMBER S
, CHARINDEX(' ',A.txt+' ',NUMBER + 1) E
FROM MASTER.DBO.SPT_VALUES
WHERE NUMBER = CHARINDEX (' ',' '+A.txt,NUMBER)
AND TYPE ='P'
ORDER BY NUMBER) B
) ,
-- 누적 계산후 자릿수만큼 배분
res3 as (
select top 100 percent a.idx ,a.id ,a.buk ,a.buk_len ,sum(b.buk_len ) gbuk_len , CEILING ( sum(b.buk_len) / 60.) gb_id
from res2 a join res2 b on a.idx >= b.idx
group by a.idx ,a.id ,a.buk ,a.buk_len
order by a.idx
)
-- 분리된 행수를 열로 합하기...
-- http://www.sqler.com/141578
SELECT distinct
gb_id
, STUFF(
(SELECT ' ' + buk AS [text()] FROM res3 b WHERE b.gb_id = a.gb_id and a.id = b.id FOR XML PATH(''))
, 1, 1, ''
) AS name_csv
FROM res3 a
ORDER BY 1
GO