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

पिवट टेबल और समवर्ती कॉलम

SQL सर्वर 2005 एक बहुत ही उपयोगी PIVOT और UNPIVOT ऑपरेटर प्रदान करता है जो आपको PIVOT और कुछ कोड जनरेशन/डायनेमिक SQL

का उपयोग करके इस कोड को रखरखाव-मुक्त बनाने की अनुमति देता है।
/*
CREATE TABLE [dbo].[stackoverflow_159456](
    [ID] [int] NOT NULL,
    [TYPE] [char](1) NOT NULL,
    [SUBTYPE] [char](1) NOT NULL,
    [COUNT] [int] NOT NULL,
    [MONTH] [datetime] 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 + ', ', '') + '[' + PIVOT_CODE + ']'
        ,@select_list = COALESCE(@select_list + ', ', '') + 'ISNULL([' + PIVOT_CODE + '], 0) AS [' + PIVOT_CODE + ']'
FROM (
    SELECT DISTINCT [TYPE] + '_' + SUBTYPE AS PIVOT_CODE
    FROM stackoverflow_159456
) AS PIVOT_CODES

SET @sql = '
;WITH p AS (
    SELECT ID, [MONTH], [TYPE] + ''_'' + SUBTYPE AS PIVOT_CODE, SUM([COUNT]) AS [COUNT]
    FROM stackoverflow_159456
    GROUP BY ID, [MONTH], [TYPE] + ''_'' + SUBTYPE
)
SELECT ID, [MONTH], ' + @select_list + '
FROM p
PIVOT (
    SUM([COUNT])
    FOR PIVOT_CODE IN (
        ' + @pivot_list + '
    )
) AS pvt
'

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. SQL सर्वर में इसकी आईडी से कॉलम का नाम प्राप्त करें:COL_NAME ()

  2. SQL सर्वर में CAST () कैसे काम करता है

  3. SQL में डायनामिक रूप से/प्रोग्रामेटिक रूप से WHERE क्लॉज़ जोड़ें

  4. SQL सर्वर में प्राथमिक कुंजी के साथ सभी तालिकाओं को वापस करने के 7 तरीके

  5. स्तंभ का नाम बदलें SQL सर्वर 2008