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

कैसे पिवट करें? एकाधिक पंक्तियों के साथ एकाधिक पंक्तियों को एक पंक्ति में कैसे परिवर्तित करें?

MYSQL संस्करण

यहाँ क्वेरी है। सम्मिलित क्वेरी उपयोगकर्ता परिभाषित चर MySQL सुविधा . बाहरी क्वेरी GROUP BY . का उपयोग करके एक PIVOT तालिका बनाती है और आंतरिक तालिका से पंक्ति संख्या के साथ मामला। यदि आपको उत्पादों के कॉलम की संख्या में परिवर्तन करने की आवश्यकता है तो इस क्वेरी को गतिशील जोड़ने पर विचार करें MAX(CASE WHEN p.RowNum=X THEN p.Product END) as ProductX चयन सूची में।

select Clients.ClientName,
       MAX(CASE WHEN p.RowNum=1 THEN p.Product END) as Product1,
       MAX(CASE WHEN p.RowNum=2 THEN p.Product END) as Product2,
       MAX(CASE WHEN p.RowNum=3 THEN p.Product END) as Product3,
       MAX(CASE WHEN p.RowNum=4 THEN p.Product END) as Product4


FROM Clients
JOIN
(
  SELECT Products.*,
       if(@ClientId<>ClientId,@rn:=0,@rn),
       @ClientId:=ClientId,
       @rn:[email protected]+1 as RowNum

  FROM Products, (Select @rn:=0,@ClientId:=0) as t
  ORDER BY ClientId,ProductID
 ) as P 
   ON Clients.ClientId=p.ClientId

GROUP BY Clients.ClientId

SQLFiddle डेमो

SQL सर्वर संस्करण:

select Clients.ClientId,
       MAX(Clients.ClientName),
       MAX(CASE WHEN p.RowNum=1 THEN p.Product END) as Product1,
       MAX(CASE WHEN p.RowNum=2 THEN p.Product END) as Product2,
       MAX(CASE WHEN p.RowNum=3 THEN p.Product END) as Product3,
       MAX(CASE WHEN p.RowNum=4 THEN p.Product END) as Product4


FROM Clients
JOIN
(
  SELECT Products.*,
       ROW_NUMBER() OVER (PARTITION BY ClientID ORDER BY ProductID) 
         as RowNum

  FROM Products
 ) as P 
   ON Clients.ClientId=p.ClientId
GROUP BY Clients.ClientId

SQLFiddle डेमो



  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. तालिका में * प्रदर्शित करना

  3. MYSQL पंक्तियों का चयन करें लेकिन पंक्तियों में स्तंभों और स्तंभों में पंक्तियों का चयन करें

  4. PHP में दो बार के बीच समय अंतर प्राप्त करना

  5. MySQL:वर्तमान सप्ताह के सोमवार की तिथि चुनें