Product
레코드와 Model
레코드가있는 테이블이 있습니다. 제품 및 모델 레코드는 모두 QTY
및 Size
열입니다. 주어진 product_id
를 들어, 나는 Model
기록에서 모든 qtys
및 sizes
을 잡은의 단일 * qty and size
필드에 배치하고 싶은 ** 부모Product
기록, 파이프 "|
"로 구분. 여기에 지금까지 가지고있는 SQL이 있습니다. 주어진 product_id에 대한 모델 레코드의 크기 및 qty 값을 성공적으로 가져 왔지만 부모 제품 레코드 필드를 업데이트 할 수 없어 재귀 적으로 수행합니다. 누군가 나에게 손을 줄 수 있습니까? 들으재귀 통합 병합
이 예는 PRODUCT_ID '26206'
--declare local variables
DECLARE
@size_DelimitedString VARCHAR(MAX),
@qty_DelimitedString VARCHAR(MAX)
--pivot rows into delimited string
SELECT
@size_DelimitedString = COALESCE(@size_DelimitedString, '') + CONVERT(VARCHAR(10), [BD New Product Data].model_size) + '|'
FROM
[BD New Product Data]
where record_type = 'model' and product_id = '26206'
SELECT
@qty_DelimitedString = COALESCE(@qty_DelimitedString, '') + CONVERT(VARCHAR(10), [BD New Product Data].model_quantity) + '|'
FROM
[BD New Product Data]
where record_type = 'model' and product_id = '26206'
--trim off last pipe
SET @size_DelimitedString = (SELECT SUBSTRING(@size_DelimitedString, 1, LEN(@size_DelimitedString)-1))
SET @qty_DelimitedString = (SELECT SUBSTRING(@qty_DelimitedString, 1, LEN(@qty_DelimitedString)-1))
--show results
SELECT @size_DelimitedString
SELECT @qty_DelimitedString
어떤 RDBMS와 버전을 사용? 오라클은 버전 10g 또는 그 이전 버전에서 이것을 쉽게 수행 할 수있는 WM_CONCAT과 여러 행을 1 개로 결합하여 재귀 부분을 제거하는 LIST_AGG 또는 XML_AGG를 지원합니다. 내 생각에 SQL Server는 XML 경로를 사용합니다. 조금 더 복잡하지만 작동합니다 (예 : http://stackoverflow.com/questions/12559551/sql-server-equivalent-of-wm-concat-function) – xQbert
MS SQL 2012.Microsoft SQL Server Management Studio \t을 사용하고 있습니다. \t \t \t \t \t 11.0.2100.60 Microsoft 데이터 액세스 구성 요소 (MDAC) \t \t \t \t \t \t 6.1.7601.17514 마이크로 소프트 MSXML \t \t \t \t \t \t 3.0 4.0 5.0 6.0 마이크로 소프트 인터넷 익스플로러 \t \t \t \t \t \t 9.10.9200.16540 마이크로 소프트 .NET 프레임 워크 \t \t \t \t \t \t 4.0.30319.296 운영 체제 \t \t \t \t \t \t 6.1.7601 – user2268505
없음 압력은 전혀 없지만 http://meta.stackexchange.com/questions/10672/encourage-users-to-select-accepted-answer-for-old-quest 이온/10690 # 10690. :) – bob