27,579
社区成员
发帖
与我相关
我的任务
分享
IF OBJECT_ID('tempdb..#tmp_1') IS NOT NULL DROP TABLE #tmp_1
CREATE TABLE #tmp_1 (goodsno VARCHAR(1),color VARCHAR(100))
INSERT INTO #tmp_1
select 'A','红,黄' union all
select 'B','红,蓝,绿'union all
select 'B','红,蓝' union all
select 'C','红,黄' union all
select 'C','红,绿' union all
select 'D','绿,黄,蓝' union all
select 'D','红,绿,蓝' union all
select 'D','红,黄,绿'
;WITH aa AS (
SELECT DISTINCT a.goodsno,SUBSTRING(a.color, b.number, CHARINDEX(',', a.color+',', b.number)-b.number) AS color
FROM #tmp_1 a
JOIN MASTER.dbo.spt_values b
ON CHARINDEX(',', ','+a.color, b.number) = b.number
WHERE b.[type]= 'P'
)
SELECT b.goodsno,LEFT(color,LEN(color)-1) as color FROM (
SELECT goodsno,
(SELECT color+',' FROM aa
WHERE goodsno=a.goodsno
FOR XML PATH('')) AS color
FROM aa a
GROUP BY goodsno
) b
LZ试试