SSRS: анализ результатов запроса SQL Server с колонкой XML - PullRequest
2 голосов
/ 25 марта 2011

Я смотрю на следующий запрос:

SELECT  txt.ID, txt.Rev, txt.Words,
        flds.ReferenceName
FROM    Fields flds (NOLOCK) 
        JOIN WorkItemLongTexts txt (NOLOCK) 
            ON flds.FldID = txt.FldID
WHERE   flds.ReferenceName = 'Microsoft.VSTS.TCM.Steps'

Третий столбец (txt.Words) возвращает это значение:

<steps id="0" last="3">
  <step id="1" type="ValidateStep">
    <parameterizedString>
      <text>Step 1</text>
    </parameterizedString>
    <parameterizedString>
      <text>Result 1</text>
    </parameterizedString>
    <description />
  </step>
  <step id="2" type="ValidateStep">
    <parameterizedString>
      <text>Step 2</text>
    </parameterizedString>
    <parameterizedString>
      <text>Result 2</text>
    </parameterizedString>
    <description />
  </step>      
</steps>

Очевидно, я легко могу разобрать это.net клиентское приложение.Тем не менее, я хотел бы перенести этот запрос непосредственно в отчет SSRS.

Есть ли способ получить данные из этого столбца в наборе расходных данных SSRS, например:
1 |ValidateStep |Шаг 1 |Результат 1
2 |ValidateStep |Шаг 2 |Результат 2

(или что-нибудь подобное)

Ответы [ 2 ]

1 голос
/ 26 марта 2011

Я ничего не знаю о ssrs, но вот как я это сделал бы в обычном запросе. Возможно, это то, что вы можете использовать. Я упростил ваш пример и вместо этого использовал табличную переменную. Я предполагаю, что XMLColumn имеет тип данных xml.

-- Sample table
declare @T table (ID int, XMLColumn xml)

-- Insert sample data
insert into @T values
(1,'
<steps id="0" last="3">
  <step id="1" type="ValidateStep">
    <parameterizedString>
      <text>Step 1</text>
    </parameterizedString>
    <parameterizedString>
      <text>Result 1</text>
    </parameterizedString>
    <description />
  </step>
  <step id="2" type="ValidateStep">
    <parameterizedString>
      <text>Step 2</text>
    </parameterizedString>
    <parameterizedString>
      <text>Result 2</text>
    </parameterizedString>
    <description />
  </step>      
</steps>')

-- Duplcate first row
insert into @T 
select 2, XMLColumn
from @T


-- The query
select
  ID as RowID,
  s.value('@id', 'int') as ID, 
  s.value('@type', 'varchar(15)') as [Type],
  s.value('parameterizedString[1]/text[1]', 'varchar(15)') as Step, 
  s.value('parameterizedString[2]/text[1]', 'varchar(15)') as Result 
from @T

Результат

RowID       ID          Type            Step            Result
----------- ----------- --------------- --------------- ---------------
1           1           ValidateStep    Step 1          Result 1
1           2           ValidateStep    Step 2          Result 2
2           1           ValidateStep    Step 1          Result 1
2           2           ValidateStep    Step 2          Result 2
0 голосов
/ 25 марта 2011

Вы можете использовать Функциональность TSQL OpenXM L, чтобы получить набор строк из ваших XML-данных, однако вам нужна комбинация элементов и атрибутов, так что это будет небольшая работа.

...