表 QA_COMPLAINT_JO
最后效果:
代码:
--创建一个临时表,字段的数值范围要大,否则容易溢出
IF NOT Object_id('TEMPDB..#temp1') IS NULL
DROP TABLE #temp1
CREATE TABLE #temp1
(
COMPLAINT_ID bigint ,
JO_NO NVARCHAR(1000) ,
STYLE_NO NVARCHAR(1000)
)
--将数据插入这个临时表
INSERT INTO #temp1(COMPLAINT_ID,JO_NO,STYLE_NO)
SELECT DISTINCT COMPLAINT_ID,
JO_NO,
STYLE_NO
FROM dbo.QA_COMPLAINT_JO
<pre name="code" class="sql">--将多行数据并成一行
DECLARE @COMPLAINT_ID BIGINT,
@JO_NO NVARCHAR(1000),
@STYLE_NO NVARCHAR(1000)
UPDATE #temp1
SET @JO_NO = CASE
WHEN @COMPLAINT_ID = COMPLAINT_ID THEN @JO_NO + '/' + JO_NO
ELSE JO_NO
END,
@STYLE_NO = CASE
WHEN @COMPLAINT_ID = COMPLAINT_ID THEN @STYLE_NO + '/' + STYLE_NO
ELSE STYLE_NO
END,
@COMPLAINT_ID = COMPLAINT_ID,
JO_NO = @JO_NO,
STYLE_NO = @STYLE_NO
SELECT COMPLAINT_ID,
JO_NO=Max(JO_NO),
STYLE_NO=Max(STYLE_NO)
FROM #temp1
GROUP BY COMPLAINT_ID