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
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