;
WITH documentswith42cols
AS (SELECT document_id
FROM documentmetadata
GROUP BY document_id
HAVING Count(1) = 42),
test
AS (SELECT DM.document_id,
wf.id,
wf.currentstatename,
DM.displayname,
F.NAME,
DM.fieldvalue
FROM documentmetadata DM
--inner join DocumentsWith42Cols cols42 on cols42.Document_ID = DM.Document_ID -- ignore incase of less than 42 columns
INNER JOIN field F
ON DM.field_id = F.id
AND f.NAME <> 'GL Coding'
INNER JOIN workflowitem wf
ON wf.document_id = dm.document_id
AND Isnull(wf.isrunning, 1) = 1
AND Isnull(wf.isterminated, 0) = 0
WHERE DM.document_id IN ( 20113)-- specific document id's
UNION ALL
SELECT DM.document_id,
wf.id,
wf.currentstatename,
DM.displayname,
F.NAME,
**Cast(DM.fieldvalue AS XML).value('(/DocumentElement//TableFieldColumn/Account_x0020_Number/node())[1]', 'varchar(max)') + ' , ' +
Cast(DM.fieldvalue AS XML).value('(/DocumentElement//TableFieldColumn/Account_x0020_Number/node())[2]', 'varchar(max)')**
AS FieldValue
FROM documentmetadata DM
--inner join DocumentsWith42Cols cols42 on cols42.Document_ID = DM.Document_ID -- ignore incase of less than 42 columns
INNER JOIN field F
ON DM.field_id = F.id
AND f.NAME = 'GL Coding'
AND F.id = 331 -- Duplicate f.Name 'GL Coding'
INNER JOIN workflowitem wf
ON wf.document_id = dm.document_id
AND Isnull(wf.isrunning, 1) = 1
AND Isnull(wf.isterminated, 0) = 0
WHERE wf.document_id IN ( 20113 )-- specific document id's
) `enter code here`
SELECT [GL Coding]
FROM (SELECT document_id,
id,
NAME,
fieldvalue
FROM test) AS SourceTable
PIVOT (Max(fieldvalue)
FOR NAME IN ([GL Coding])) AS pivottable
Пожалуйста, помогите мне в этом, чтобы отобразить несколько значений GL-Coding в одном raw / столбце, используя CAST. Потому что я не знаю, как использовать CAST. Прямо сейчас я делаю для значения 2, которое вы видите жирным шрифтом, но мне нужно отобразить все значения, если оно больше 1.
[Вы можете проверить на этом изображении, что у меня есть два кода GL, потому что я написал код для 2 в запросе] [1]
[1]: https://i.stack.imgur.com/d8ymm.jpg