Можете ли вы помочь мне получить некоторые данные из XML? - PullRequest
0 голосов
/ 23 мая 2019

Получение данных SQL из нескольких XML

Я уже пытался поместить код в переменную XML и выбрать OrderNumber, ProductionLine и ItemId, но у меня возникли некоторые проблемы с запросом.

    DECLARE @DXML XML = '<ComDecom OrderNumber="101983026" 
    ProductionLine="14" BatchNumber="02-00" ItemObjectTypeId="1" 
    ItemFlag="20" EventGuid="989bfdb4-9dd8-40be-9872-1e0bae7cc4d6" 
    LastMessage="false" HostName="PMIPTLISWCT0014+1">
      <Item ItemId="LESTCNNGxDDCPq1bSF1S119052306" TimeStamp="2019-05-23 
     07:56:07.475 +01:00" SeqNumber="175660" />
      <Item ItemId="LESTCNNGxDDCPq1bSF1S119052306" TimeStamp="2019-05-23 
     07:56:07.519 +01:00" SeqNumber="175661" />
      <Item ItemId="LESTCNoTmCiiVu1bSF1S119052306" TimeStamp="2019-05-23 
     07:56:08.487 +01:00" SeqNumber="175662" /> 
                </ComDecom>'

     SELECT ComDeCom.value('@OrderNumber', 'int') AS OrderNumber
        ,ComDecom.value('@ProductionLine', 'int') AS ProductionLine
        ,ItemTbl.value('@ItemId', 'varchar') AS Item
     FROM @dxml.nodes('/ComDecom/') AS ComDecomTbl(ComDecom)
     CROSS APPLY ComDecom.Item.nodes('Site') AS ItemTbl(Item)

1 Ответ

0 голосов
/ 23 мая 2019

Я думаю, что вы ищете это

DECLARE @DXML XML= 
'<ComDecom OrderNumber="101983026" ProductionLine="14" BatchNumber="02-00" ItemObjectTypeId="1" ItemFlag="20" EventGuid="989bfdb4-9dd8-40be-9872-1e0bae7cc4d6" LastMessage="false" HostName="PMIPTLISWCT0014+1">
  <Item ItemId="LESTCNNGxDDCPq1bSF1S119052306" TimeStamp="2019-05-23       07:56:07.475 +01:00" SeqNumber="175660" />
  <Item ItemId="LESTCNNGxDDCPq1bSF1S119052306" TimeStamp="2019-05-23       07:56:07.519 +01:00" SeqNumber="175661" />
  <Item ItemId="LESTCNoTmCiiVu1bSF1S119052306" TimeStamp="2019-05-23       07:56:08.487 +01:00" SeqNumber="175662" />
</ComDecom>';


SELECT 
T.N.value('@OrderNumber', 'int') AS OrderNumber,
T.N.value('@ProductionLine', 'int') AS ProductionLine,
T2.N2.value('@ItemId', 'varchar(MAX)') AS Item
FROM @dxml.nodes('/ComDecom') AS T(N)
CROSS APPLY @dxml.nodes('/ComDecom/Item') AS T2(N2)

Выход -

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