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

SQL सर्वर:मैं एकाधिक पंक्ति मानों को अलग-अलग कॉलम में कैसे समूहित कर सकता हूं?

यहाँ एक गतिशील धुरी तरीका है:

declare @table table (Email varchar(64), Phone varchar(16), ID varchar(3))
insert into @table
values

('[email protected]','555-5555','001'),
('[email protected]','555-5556','001'),
('[email protected]','555-5557','001'),
('[email protected]','555-5558','001'),
('[email protected]','333-5556','002'),
('[email protected]','444-5556','002'),
('[email protected]','777-5556','002')


select
    Email
    ,Phone
    ,ID
    ,row_number() over (partition by ID order by Phone) as RN
into #staging
from 
    @table




DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)

--Get distinct values of the PIVOT Column 
SELECT @ColumnName= ISNULL(@ColumnName + ',','') 
       + QUOTENAME(RN)
FROM (SELECT DISTINCT RN FROM #staging) AS RN

--Prepare the PIVOT query using the dynamic 
SET @DynamicPivotQuery = 
  N'SELECT Email, ID, ' + @ColumnName + '
    FROM #staging
    PIVOT(MAX(Phone) 
          FOR RN IN (' + @ColumnName + ')) AS PVTTable'
--Execute the Dynamic Pivot Query
EXEC sp_executesql @DynamicPivotQuery

drop table #staging

यदि आप केवल 3 की अपेक्षा कर रहे हैं, जैसा कि आपने कहा है, तो आप गतिशील को छोड़ सकते हैं...

declare @table table (Email varchar(64), Phone varchar(16), ID varchar(3))
insert into @table
values

('[email protected]','555-5555','001'),
('[email protected]','555-5556','001'),
('[email protected]','333-5556','002'),
('[email protected]','444-5556','002'),
('[email protected]','777-5556','002')

;with cte as(
select
    Email
    ,Phone
    ,ID
    ,row_number() over (partition by ID order by Phone) as RN
from 
    @table)

select
    Email
    ,max(case when RN = 1 then Phone end) as Phone1
    ,max(case when RN = 2 then Phone end) as Phone2
    ,max(case when RN = 3 then Phone end) as Phone3
    ,ID
from
    cte
group by
    Email
    ,ID



  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. CONCAT () के साथ SQL सर्वर में स्ट्रिंग्स को कैसे संयोजित करें

  3. SQL सर्वर केवल नवीनतम मान का उपयोग करके विशिष्ट पंक्तियों का चयन करता है

  4. आज की तारीख से पिछले एक सप्ताह के डेटा का चयन कैसे करें

  5. SQL सर्वर नेटवर्क इंटरफेस:कनेक्शन स्ट्रिंग मान्य नहीं है [87]