Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एक्सएमएल कॉलम जोड़ें/संशोधित करें, अन्य कॉलम मान से विशेषताओं के साथ, अन्य फ़ील्ड के साथ कॉलम के रूप में परिणाम लौटाएं

declare @TableX table (ID int identity, XmlField xml)

insert into @TableX values
(
'<Node Attrib="9">Name1</Node>
 <Node Attrib="100">Name2</Node>
 <Node Attrib="101">Name2</Node>'
)

insert into @TableX values
(
'<Node Attrib="9">Name1</Node>
 <Node Attrib="101">Name2</Node>'
)

insert into @TableX values
(
'<Node Attrib="1">Name1</Node>'
)

declare @TableY table (IntField int, OtherField varchar(15))

insert into @TableY values 
(9, 'SomeOtherValue1'),
(100, 'SomeOtherValue2'),
(101, 'SomeOtherValue3')

;with C as
(
  select X.ID,
         Y.IntField as Attrib,
         Y.OtherField as OtherField
  from @TableX as X
    cross apply X.XmlField.nodes('/Node') as T(N)
    inner join @TableY as Y
      on T.N.value('@Attrib', 'int') = Y.IntField
)
select (select C2.Attrib as '@Attrib',
               C2.OtherField as '@OtherField'
        from C as C2
        where C1.ID = C2.ID
        for xml path('Node'), type) as XMLField       
from C as C1
group by ID

परिणाम:

XMLField
<Node Attrib="9" OtherField="SomeOtherValue1" /><Node Attrib="100" OtherField="SomeOtherValue2" /><Node Attrib="101" OtherField="SomeOtherValue3" />
<Node Attrib="9" OtherField="SomeOtherValue1" /><Node Attrib="101" OtherField="SomeOtherValue3" />



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. केस कंडीशन और SUM () के साथ सेलेक्ट क्वेरी

  2. SQL में एक शीर्ष स्तरीय अभिभावक ढूँढना

  3. कौन से कॉलम आम तौर पर अच्छी अनुक्रमणिका बनाते हैं?

  4. INSERT कथन मानों की एक गतिशील सूची बनाएं

  5. एसएसआईएस नियंत्रण प्रवाह में चुनिंदा कार्य निष्पादित करें