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

कई से कई संबंधों के लिए SQL सर्वर क्वेरी - क्वेरी कैसे करें?

आप निम्न का उपयोग कर सकते हैं जो row_number() applies पर लागू होता है रिकॉर्ड के लिए:

select DateTimeID,
  [1] as Wavelength1, 
  [2] as Wavelength2,
  SensorId
from
(
  select [DateTimeID], [Wavelength], [SensorID],
    row_number() over(partition by DateTimeID, SensorId
                      order by DateTimeID) rn
  from yourtable
) src
pivot
(
  max(Wavelength)
  for rn in ([1], [2])
) piv

देखें SQL Fiddle with Demo

यदि आपके पास wavelength की एक अज्ञात संख्या होगी मान हैं, तो आप इसे उत्पन्न करने के लिए गतिशील SQL का उपयोग कर सकते हैं:

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT distinct ',' + QUOTENAME('Wavelength'+cast(rn as varchar(50))) 
                    from
                    (
                      select row_number() over(partition by DateTimeID, SensorId
                                              order by DateTimeID) rn
                      from yourtable
                    ) src
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT DateTimeID,' + @cols + ', SensorId  from 
             (
                select [DateTimeID], [Wavelength], [SensorID],
                  ''Wavelength''+cast(row_number() over(partition by DateTimeID, SensorId
                                        order by DateTimeID) as varchar(50)) rn
                from yourtable
            ) x
            pivot 
            (
                max(Wavelength)
                for rn in (' + @cols + ')
            ) p '

execute(@query)

देखें SQL Fiddle with Demo




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SWITCHOFFSET () SQL सर्वर में उदाहरण

  2. मैं MS SQL सर्वर प्रबंधन स्टूडियो का उपयोग किए बिना SQL सर्वर में अपना डिफ़ॉल्ट डेटाबेस कैसे बदल सकता हूँ?

  3. SQL सर्वर में LEN () बनाम DATALENGTH ()

  4. SQL सर्वर 2008 को आउटलुक कैलेंडर से कनेक्ट करें?

  5. sql समूह बनाम विशिष्ट