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

एसक्यूएल 2005 में पिवोट

ROW_NUMBER() का उपयोग करना , PIVOT और कुछ गतिशील SQL (लेकिन कोई कर्सर आवश्यक नहीं):

CREATE TABLE [dbo].[stackoverflow_198716](
    [code] [varchar](1) NOT NULL,
    [number] [int] NOT NULL
) ON [PRIMARY]

DECLARE @sql AS varchar(max)
DECLARE @pivot_list AS varchar(max) -- Leave NULL for COALESCE technique
DECLARE @select_list AS varchar(max) -- Leave NULL for COALESCE technique

SELECT @pivot_list = COALESCE(@pivot_list + ', ', '') + '[' + CONVERT(varchar, PIVOT_CODE) + ']'
        ,@select_list = COALESCE(@select_list + ', ', '') + '[' + CONVERT(varchar, PIVOT_CODE) + '] AS [col_' + CONVERT(varchar, PIVOT_CODE) + ']'
FROM (
    SELECT DISTINCT PIVOT_CODE
    FROM (
        SELECT code, number, ROW_NUMBER() OVER (PARTITION BY code ORDER BY number) AS PIVOT_CODE
        FROM stackoverflow_198716
    ) AS rows
) AS PIVOT_CODES

SET @sql = '
;WITH p AS (
    SELECT code, number, ROW_NUMBER() OVER (PARTITION BY code ORDER BY number) AS PIVOT_CODE
    FROM stackoverflow_198716
)
SELECT code, ' + @select_list + '
FROM p
PIVOT (
    MIN(number)
    FOR PIVOT_CODE IN (
        ' + @pivot_list + '
    )
) AS pvt
'

PRINT @sql

EXEC (@sql)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. टी-एसक्यूएल:स्ट्रिंग कॉन्सटेनेशन के विपरीत - स्ट्रिंग को एकाधिक रिकॉर्ड में कैसे विभाजित करें

  2. SQL सर्वर (T-SQL) में दिनांक से वर्ष निकालने के 3 तरीके

  3. डेटटाइम टू टाइम कास्ट कैसे करें

  4. SQL सर्वर समर्थित संस्करण मैट्रिक्स

  5. SQL सर्वर 2014 वृद्धिशील सांख्यिकी