[SQL] 여러 행에 테이블 반환 함수를 실행?
SQL여러 행에 테이블 반환 함수를 실행?
같은에서 dbo.Split ()와 같은 테이블 반환 함수 감안할 때 "T-SQL : 반대 문자열 연결에 - 어떻게 여러 레코드로 문자열을 분할"나는 인수로 여러 행을 통과 어떻게?
이 작품 :
SELECT *
FROM dbo.Split
(',', (SELECT myColumn FROM Stuff WHERE id = 22268))
WHERE ISNULL(s,'') <> ''
그것은 반환 :
pn s
----------- -----------
1 22351
2 22354
3 22356
4 22357
5 22360
하지만이되지 않습니다 :
SELECT *
FROM dbo.Split
(',', (SELECT myColumn FROM Stuff))
WHERE ISNULL(s,'') <> ''
도 아니다이 수행합니다
SELECT * FROM dbo.Split_temp(',', myColumn), Stuff
워드 프로세서 말 :
결과의 종류는 내가 좋아하는 뭔가를 보일 것이다 찾고 있어요 설정 :
id pn s
----------- ----------- -----------
22268 1 22351
22268 2 22354
22268 3 22356
22268 4 22357
22268 5 22360
24104 1 22353
24104 2 22355
24104 3 22356
24104 4 22358
24104 5 22360
24104 6 22362
24104 7 22364
.
.
.
(물론, 커서는 제외) 이러한 목표를 달성하기 위해 전혀 방법이 있나요?
(편집하다)
MarlonRibunal의 요청에 따라, 샘플 테이블과 같은 위의 결과 외모를 생산 :
id myColumn
----------- -------------------------------------------
22268 22351,22354,22356,22357,22360,
24104 22353,22355,22356,22358,22360,22362,22364,
ID는 INT이고; myColumn은 VARCHAR (최대)이다.
해결법
-
==============================
1.OUTER이 적용됩니다
OUTER이 적용됩니다
SELECT Stuff.id ,Results.pn ,Results.s FROM stackoverflow_454945 AS Stuff OUTER APPLY dbo.Split(',', Stuff.myColumn) AS Results WHERE ISNULL(Results.s,'') <> ''
-
==============================
2.당신은 유착의 연결 동작을 사용할 수 있습니다
당신은 유착의 연결 동작을 사용할 수 있습니다
declare @split varchar(max) set @split = '' select @split = @split + Coalesce(myColumn + ',' , ' ') from Stuff WHERE id = 22268 select * from dbo.Split(',', @Left(@split,len(@split) -1))
나는 그 커서를 사용하는 것보다 더 좋은 것이라고 모른다.
from https://stackoverflow.com/questions/454945/execute-table-valued-function-on-multiple-rows by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 는 SQL 서버 데이터베이스 테이블이 개 중복 업데이트 한 (0) | 2020.06.26 |
---|---|
[SQL] 에 "연관 테이블"(대다 관계)에 대한 적절한 이름 기능 [폐쇄] (0) | 2020.06.26 |
[SQL] INET_ATON ()와 PHP의 INET_NTOA ()? (0) | 2020.06.26 |
[SQL] 인덱스 및 다중 열 기본 키 (0) | 2020.06.26 |
[SQL] 자바에서 타임 스탬프의 시간 부분을 재설정 (0) | 2020.06.26 |