I am in need of help fixing a query so it returns the right number of rows. I have the table below with 12 rows per ProductID in it. What I would like is to turn these 12 rows to 1 row with 12 set columns for each Product ID.
the generated dynamic code only creates 1 row
--Table this belongs to
Create table #Attributes
(
ProductID uniqueIdentifier,
PAID Varchar(48),
Label nvarchar(50),
AttrValue nvarchar(3072),
unit nvarchar(50)
)
. . . . . . .
select *
from
(
select col + cast(rn as varchar(10)) new_col, val
from
(
select
Cast(PAID as NVarchar(3072)) PAID
,Cast (ProductID as NVarchar(3072)) ProductID
,Cast (Label as NVarchar(3072)) Label
,Cast (Value as NVarchar(3072)) Value
,Cast (unit as NVarchar(3072)) unit
,row_number() over(partition by ProductID order by ProductID) rn
from #Attributes
) x
unpivot
(
val
for col in ([ProductID],[PAID],[Label],[Value],[unit])
) u
) x1
pivot
(
max(val)
for new_col in
([ProductID1],[PAID1],[Label1],[Value1],[unit1],[ProductID2],[PAID2],[Label2],[Value2],[unit2],[ProductID3],[PAID3],[Label3],[Value3],[unit3],[ProductID4],[PAID4],[Label4],[Value4],[unit4],[ProductID5],[PAID5],[Label5],[Value5],[unit5],[ProductID6],[PAID6],[Label6],[Value6],[unit6],[ProductID7],[PAID7],[Label7],[Value7],[unit7],[ProductID8],[PAID8],[Label8],[Value8],[unit8],[ProductID9],[PAID9],[Label9],[Value9],[unit9],[ProductID10],[PAID10],[Label10],[Value10],[unit10],[ProductID11],[PAID11],[Label11],[Value11],[unit11],[ProductID12],[PAID12],[Label12],[Value12],[unit12],[ProductID13],[PAID13],[Label13],[Value13],[unit13],[ProductID14],[PAID14],[Label14],[Value14],[unit14],[ProductID15],[PAID15],[Label15],[Value15],[unit15],[ProductID16],[PAID16],[Label16],[Value16],[unit16],[ProductID17],[PAID17],[Label17],[Value17],[unit17],[ProductID18],[PAID18],[Label18],[Value18],[unit18],[ProductID19],[PAID19],[Label19],[Value19],[unit19],[ProductID20],[PAID20],[Label20],[Value20],[unit20],[ProductID21],[PAID21],[Label21],[Value21],[unit21])
) p
The current code, only generates 1 row of data and ignores other ProductID’s in my table. I would appreciate some help to fix this issue. Thanks.
BELOW here is a table(think Excel without the column dividing lines. The Product ID field has values but there are no values in the PAID, LABEL, VALUE and UNIT columns. That is why they appear blank in the table.
PRODUCTID PAID LABEL VALUE UNIT
--------------------------------------------------------------------------------------
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
F4D58DCE-8EED-40E3-BF4C-07349BEC0A3E
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
ACF57CF7-7206-46F5-A341-16E1B9828DBC
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
95CF8634-DF1C-4E12-9584-56D726F9D3FD
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
C4196FB0-AAE1-4BC4-A6E3-630B90D249C1
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
A5A24B87-E4E7-4282-8BB1-7413198A7D1A
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
7EECE72B-26C5-4306-9706-85E344243122
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
60B1AB86-E0EB-41AE-858C-AAD4744FD49C
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
44CDDEC6-4889-491B-A896-B719C5B9F3E4
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
3866BBA2-624A-43B7-A04D-DE8ADF5DF739
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
AA0A3639-2A36-4731-BF3F-F278D54A99C8
Exclude
ProductIDfrom the UNPIVOT column list and, correspondingly, exclude allProductID*columns from the PIVOT column list. Also, includeProductIDin the subquery’s SELECT:UPDATE: Explanation for the above solution.
In your query, the
xsubquery returns data like this:The
UNPIVOTclause transforms them like so:And the SELECT clause concatenates the first two columns to return the following:
That is the rowset that is ultimately being pivoted. Note that at this point there is no way for SQL Server to tell product
A‘s attributes from those of productB. The PIVOT clause acts similar to GROUP BY, collapsing all values with identicalnew_colvalues into one by applyingMAX()to them. If there was a non-pivoted column, rows would be split into groups based on the values in that column. But there’s no one in the above rowset and, as a result, all the rows are collapsed into one.What you need instead is to make your final-but-one rowset look something like this:
That is, the
ProductIDcolumn allows SQL Server to distinguish betweenPAID1belonging to productAand that belonging toB.To obtain that rowset, you just need to exclude
ProductIDfrom theUNPIVOTclause and pull it alongside the unpivoted columns instead. And sinceProductIDis excluded from the UNPIVOT column list, all theProductID1,ProductID2etc. should also be excluded from the PIVOT one, which you can see done in the query above.