Как отобразить несколько «GL Coding» в одном столбце / сырье, используя CAST в SQL - PullRequest
0 голосов
/ 09 мая 2018
   ; 
    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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...