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

तालिका सामान्यीकरण (पार्स कॉमा से अलग किए गए फ़ील्ड को अलग-अलग रिकॉर्ड में)

--सेटअप:

declare @Device table(DeviceId int primary key, Parts varchar(1000))
declare @Part table(PartId int identity(1,1) primary key, PartName varchar(100))
declare @DevicePart table(DeviceId int, PartId int)

insert @Device
values
    (1, 'Part1, Part2, Part3'),
    (2, 'Part2, Part3, Part4'),
    (3, 'Part1')

--स्क्रिप्ट:

declare @DevicePartTemp table(DeviceId int, PartName varchar(100))

insert @DevicePartTemp
select DeviceId, ltrim(x.value('.', 'varchar(100)'))
from
(
    select DeviceId, cast('<x>' + replace(Parts, ',', '</x><x>') + '</x>' as xml) XmlColumn
    from @Device
)tt
cross apply
    XmlColumn.nodes('x') as Nodes(x)


insert @Part
select distinct PartName
from @DevicePartTemp

insert @DevicePart
select tmp.DeviceId, prt.PartId
from @DevicePartTemp tmp 
    join @Part prt on
        prt.PartName = tmp.PartName

-- परिणाम:

select *
from @Part

PartId      PartName
----------- ---------
1           Part1
2           Part2
3           Part3
4           Part4


select *
from @DevicePart

DeviceId    PartId
----------- -----------
1           1
1           2
1           3
2           2
2           3
2           4
3           1   


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर डेटाबेस को XML ऑप्टिमाइज़ेशन में निर्यात करें

  2. SQL सर्वर 2012 के लिए प्रदर्शन-संबंधी फ़िक्सेस

  3. SQL सर्वर CSV को कई पंक्तियों में विभाजित करता है

  4. ASP.Net में SQL इंजेक्शन को रोकना

  5. SQL सर्वर पर VMware CPU हॉट प्लग vNUMA प्रभाव