Sql server 将XML文件select中的三个值合并为一个值

Sql server 将XML文件select中的三个值合并为一个值,sql-server,Sql Server,我在将.xml文件中的数据加载到SQL Server数据库时遇到问题。直到今天,我一直在用这个查询: BEGIN DECLARE @XML AS XML,@hDoc AS INT SELECT @XML = CONVERT(XML, BulkColumn) FROM OPENROWSET(BULK 'D:\order2.xml', SINGLE_BLOB) AS x; EXEC sp_xml_preparedocument @hDoc OUTPUT, @X

我在将.xml文件中的数据加载到SQL Server数据库时遇到问题。直到今天,我一直在用这个查询:

 BEGIN 
    DECLARE @XML AS XML,@hDoc AS INT
    SELECT @XML = CONVERT(XML, BulkColumn) 
    FROM OPENROWSET(BULK 'D:\order2.xml', SINGLE_BLOB) AS x;

    EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML

    INSERT  INTO [dbo].[Client]
    SELECT *
    FROM OPENXML(@hDoc, 'orderType/client')

    WITH
    (
         OrderId varchar(200) '../../../sn',
         Client_number varchar(200) 'client_number',
         FirstName varchar(200) 'firstname', 
         LastName varchar(200) 'lastname', 
         E-Mail varchar(200) 'email'   
    )

   EXEC sp_xml_removedocument @hDoc   

END
但是现在我想把
client\u number
firstname
lastname
选在一列中,它看起来像这样:

|     Client      |
| - - - - - - - - |
|  134 John Smith |  
我真的很感谢您的帮助,我为混乱的代码道歉,因为这是我在这里的第一个问题,关于stackoverflow。
谢谢

我现在没有一个系统来尝试它,但您可能可以使用
CTE
从XML中提取值并将它们组合到主查询中,比如

WITH XMLVal AS (
  SELECT *
  FROM OPENXML(@hDoc, 'orderType/client')
  WITH (OrderId varchar(200) '../../../sn',
        Client_number varchar(200) 'client_number',
        FirstName varchar(200) 'firstname', 
        LastName varchar(200) 'lastname', 
        E-Mail varchar(200) 'email'   
  )
)
INSERT  INTO [dbo].[Client]
SELECT *, concat(Client_number, ' ', FirstName, ' ', LastName)
FROM   XMLVal
我不确定SQLServer是否会喜欢第二个
,在
CTE
中包含