У меня есть таблица T с двумя столбцами. Столбец A является столбцом varchar, а столбец B является столбцом XML.
Где-то внутри столбца B всегда есть следующий родительский тег: <Documents> ... </Documents>
. Внутри много <Document>...</Document>
потомков.
Я хотел бы получить набор результатов с двумя столбцами:
- Столбец 1 должен содержать те же значения, что и столбец A;
- В столбце 2 должно содержаться только одно
<Document>...</Document>
.
Например, Стартовая таблица T:
Column A | Column B
--------------------------------------------------------------------------
abc | <Documents><Document>Doc 1</Document><Document>Doc 2</Document></Documents>
Ожидаемый результат:
Column 1 | Column 2
-------------------------------------
abc |<Document>Doc 1</Document>
abc |<Document>Doc 2</Document>
Я могу получить столбец 2 следующим образом (как видно из документов ):
SELECT T2.C.query('.')
FROM T
CROSS APPLY T.[Column B].nodes('*/Documents/*') as T (C)
, но вместо этого это не работает:
SELECT T.[Column A], T2.C.query('.')
FROM T
CROSS APPLY T.[Column B].nodes('*/Documents/*') as T2 (C)
Как получить ожидаемый результат тогда?