0
我試圖將多行值連接成單行...我已經實現了非常接近但意識到下面的查詢錯過了第一行每次...我錯過了一些明顯的東西這裏?我之前從未使用CTE,因此我努力去理解它背後的概念。提前致謝。CTE連接缺少組迭代中的第一行
WITH CTE (AnswerResponseRefId, QuestionComponentList, QuestionComponentName,
templevel)
AS (
SELECT
tao1.AnswerResponseRefId,
CAST('' AS VARCHAR(MAX)) AS QuestionComponentList,
CAST('' AS VARCHAR(69)) AS QuestionComponentName,
0 AS templevel
FROM
TargetAnswersOrdered tao1
WHERE tao1.QuestionRefId = 'B6944310-96FA-401C-86FE-A7BEA1D7B2B0'
and tao1.TargetRefId = '5E013FC7-5AC9-45E4-A4D7-000F3C241599'
GROUP BY tao1.AnswerResponseRefId
UNION ALL
SELECT
qc.AnswerResponseRefId,
CAST(c.QuestionComponentList +
CAST(c.QuestionComponentName AS VARCHAR(64)) AS VARCHAR(MAX)),
CAST(qc.QuestionComponentRefId AS VARCHAR(64)) + '*V' +
CAST(qc.QuestionComponentVersion AS VARCHAR(2)) + '*',
templevel + 1
FROM CTE c
INNER JOIN
TargetAnswersOrdered qc
ON
c.AnswerResponseRefId = qc.AnswerResponseRefId
WHERE
CAST(qc.QuestionComponentRefId AS VARCHAR(64)) + '*V' +
CAST(qc.QuestionComponentVersion AS VARCHAR(2)) + '*'
> c.QuestionComponentName
)
SELECT
AnswerResponseRefId,
QuestionComponentList
FROM (SELECT
AnswerResponseRefId,
QuestionComponentList,
RANK() OVER (PARTITION BY
AnswerResponseRefId
ORDER BY templevel DESC)FROM CTE)
D (AnswerResponseRefId, QuestionComponentList, rank)
WHERE rank = 1 ;