Skip to Main Content
  • Questions
  • Rows to Columns Concatenating Values

Breadcrumb

Question and Answer

Chris Saxon

Thanks for the question, Manikandan.

Asked: June 09, 2017 - 6:27 pm UTC

Last updated: June 12, 2017 - 4:20 pm UTC

Version: 11

Viewed 1000+ times

You Asked

Hi,

Seq_num  ITEM_CODE ATTRIBUTE_NAME   ATTRIBUTE_VALUE  LAST_MODIFIED
====================================================================================================================
25521604 "HTC-UA-BUNDLE" "Alkaline_Battery_Count" 4   5/19/2017 10:22:49.346000 AM
25521605 "HTC-UA-BUNDLE" "Alkaline_Button_Cell_Count" 0   5/19/2017 10:22:49.346000 AM
25521608 "HTC-UA-BUNDLE" "Battery_Form"   Battery   5/19/2017 10:22:49.346000 AM
25521609 "HTC-UA-BUNDLE" "Battery_Form"   Button_Cell  5/19/2017 10:22:49.346000 AM
25521615 "HTC-UA-BUNDLE" "Battery_Packaging"  In_Device  5/19/2017 10:22:49.346000 AM
25521603 "HTC-UA-BUNDLE" "Battery_Type"   Alkaline  5/19/2017 10:25:49.346000 AM
25521606 "HTC-UA-BUNDLE" "Battery_Type"   Li-ion/Li-polymer 5/19/2017 10:25:49.346000 AM
25521618 "HTC-UA-BUNDLE" "Battery_Type"   Li-metal  5/19/2017 10:25:49.346000 AM
25521598 "HTC-UA-BUNDLE" "Battery_Voltage"  3.8   5/19/2017 10:22:49.346000 AM
25521624 "HTC-UA-BUNDLE" "Brand  "  Other   5/19/2017 10:22:49.346000 AM
25521614 "HTC-UA-BUNDLE" "Country_of_Origin"  CN   5/19/2017 10:22:49.346000 AM
25521622 "HTC-UA-BUNDLE" "Hazmat_Commodity_Type"  Battery   5/19/2017 10:22:49.346000 AM
25521601 "HTC-UA-BUNDLE" "Hazmat_Hold  " No   5/19/2017 10:22:49.346000 AM
25521610 "HTC-UA-BUNDLE" "Hazmat_Required " Yes   5/19/2017 10:22:49.346000 AM
25521611 "HTC-UA-BUNDLE" "Hazmat_UN_Number " UN3481   5/19/2017 10:26:49.346000 AM
25521625 "HTC-UA-BUNDLE" "Hazmat_UN_Number " UN3091   5/19/2017 10:26:49.346000 AM
25521620 "HTC-UA-BUNDLE" "Hybrid_Hazmat_Count " 3   5/19/2017 10:22:49.346000 AM
25521617 "HTC-UA-BUNDLE" "Kitted_Item  " No   5/19/2017 10:22:49.346000 AM
25521612 "HTC-UA-BUNDLE" "Li-ion_Battery_Count " 1   5/19/2017 10:22:49.346000 AM
25521600 "HTC-UA-BUNDLE" "Li-ion_Button_Cell_Count" 0   5/19/2017 10:22:49.346000 AM
25521619 "HTC-UA-BUNDLE" "Li-ion_Watt_Hours " 0.42   5/19/2017 10:22:49.346000 AM
25521623 "HTC-UA-BUNDLE" "Li-metal_Battery_Count " 0   5/19/2017 10:22:49.346000 AM
25521621 "HTC-UA-BUNDLE" "Li-metal_Button_Cell_Count" 1   5/19/2017 10:22:49.346000 AM
25521596 "HTC-UA-BUNDLE" "Li-metal_Grams  " 3.3   5/19/2017 10:22:49.346000 AM
25521597 "HTC-UA-BUNDLE" "Manufacturer  " HTC   5/19/2017 10:22:49.346000 AM
25521602 "HTC-UA-BUNDLE" "OEM   " Yes   5/19/2017 10:22:49.346000 AM
25521599 "HTC-UA-BUNDLE" "PI_Number  " ALKIN   5/19/2017 10:32:49.346000 AM
25521613 "HTC-UA-BUNDLE" "PI_Number  " PI970   5/19/2017 10:32:49.346000 AM
25521616 "HTC-UA-BUNDLE" "PI_Number  " PI967   5/19/2017 10:32:49.346000 AM
25521626 "HTC-UA-BUNDLE" "Product_Common_Name " 99HAHN001-00  5/19/2017 10:22:49.346000 AM
25521595 "HTC-UA-BUNDLE" "Serialized  " Yes   5/19/2017 10:22:49.346000 AM
25521607 "HTC-UA-BUNDLE" "Total_Battery_Kgs " 0.1021   5/19/2017 10:22:49.346000 AM


In the above records, Please ignore the double quotes since I put that for readability

The records that have more than one value for the Attribute_value column for the same ITEM_CODE, ATTRIBUTE_NAME and LAST_MODIFIED fields to be concatenated like below

ITEM_CODE  ATTRIBUTE_NAME    ATTRIBUTE_VALUE     LAST_MODIFIED
=============================================================================================================================================
HTC-UA-BUNDLE  Battery Form    Battery|Button Cell    5/19/2017 10:22:49.346000 AM
HTC-UA-BUNDLE  Battery Type    Alkaline|Li-ion/Li-polymer|Li-metal  5/19/2017 10:25:49.346000 AM
HTC-UA-BUNDLE  Hazmat UN Number   UN3481|UN3091     5/19/2017 10:26:49.346000 AM
HTC-UA-BUNDLE  PI Number    ALKIN|PI970|PI967    5/19/2017 10:32:49.346000 AM

<<ALL OTHER ROWS SHOULD COME AS IS Since they have a single value on the attribute value field for the same item_code, attribute_name and last_modified fields>>

The DDL statement to create the table is given below:

CREATE TABLE Table1
(
  SEQ_NUM          INTEGER,
  ITEM_CODE        VARCHAR2(128 BYTE),
  ATTRIBUTE_NAME   VARCHAR2(255 BYTE),
  ATTRIBUTE_VALUE  VARCHAR2(255 BYTE),
  LAST_MODIFIED    DATE
)

SET DEFINE OFF;
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (2996, 'HTC-UA-BUNDLE', 'Alkaline Battery Count', '4', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3044, 'HTC-UA-BUNDLE', 'Alkaline Button Cell Count', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (2998, 'HTC-UA-BUNDLE', 'Battery Form', 'Button Cell', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (2999, 'HTC-UA-BUNDLE', 'Battery Form', 'Battery', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3000, 'HTC-UA-BUNDLE', 'Battery Packaging', 'In Device', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3001, 'HTC-UA-BUNDLE', 'Battery Type', 'Li-metal', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3002, 'HTC-UA-BUNDLE', 'Battery Type', 'Alkaline', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3003, 'HTC-UA-BUNDLE', 'Battery Type', 'Li-ion/Li-polymer', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3004, 'HTC-UA-BUNDLE', 'Battery Voltage', '3.8', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3005, 'HTC-UA-BUNDLE', 'Bluetooth Software Version', 'N/A', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3006, 'HTC-UA-BUNDLE', 'Brand', 'HTC', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3007, 'HTC-UA-BUNDLE', 'COOP', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3008, 'HTC-UA-BUNDLE', 'Country of Origin', 'TW', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3009, 'HTC-UA-BUNDLE', 'Damaged and Defective Allowance', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3010, 'HTC-UA-BUNDLE', 'Extended Battery Charge Time', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3011, 'HTC-UA-BUNDLE', 'FCC ID', NULL, TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3012, 'HTC-UA-BUNDLE', 'Fused', 'No', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3013, 'HTC-UA-BUNDLE', 'Hazmat Commodity Type', 'Battery', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3014, 'HTC-UA-BUNDLE', 'Hazmat Hold', 'No', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3015, 'HTC-UA-BUNDLE', 'Hazmat Required', 'Yes', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3016, 'HTC-UA-BUNDLE', 'Hazmat UN Number', 'UN3481', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3017, 'HTC-UA-BUNDLE', 'Hazmat UN Number', 'UN3091', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3018, 'HTC-UA-BUNDLE', 'Hybrid Hazmat Count', '3', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3019, 'HTC-UA-BUNDLE', 'Kitted Item', 'No', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3020, 'HTC-UA-BUNDLE', 'Li-ion Battery Count', '1', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3021, 'HTC-UA-BUNDLE', 'Li-ion Button Cell Count', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3022, 'HTC-UA-BUNDLE', 'Li-ion Watt Hours', '0.42', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3023, 'HTC-UA-BUNDLE', 'Li-metal Battery Count', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3024, 'HTC-UA-BUNDLE', 'Li-metal Button Cell Count', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3025, 'HTC-UA-BUNDLE', 'Li-metal Grams', '3.3', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3026, 'HTC-UA-BUNDLE', 'Manufacturer', 'HTC', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3027, 'HTC-UA-BUNDLE', 'OEM', 'Yes', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3028, 'HTC-UA-BUNDLE', 'Override UOM for WorkTicket Qty?', 'Yes', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3029, 'HTC-UA-BUNDLE', 'PI Number', 'ALKIN', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3030, 'HTC-UA-BUNDLE', 'PI Number', 'PI970', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3031, 'HTC-UA-BUNDLE', 'PI Number', 'PI967', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3032, 'HTC-UA-BUNDLE', 'Packaging', 'Retail', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3033, 'HTC-UA-BUNDLE', 'Product Common Name', '99HAHN001-00', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3034, 'HTC-UA-BUNDLE', 'SRL Serial Mask', '[A-Z]{2}\d\w{2}[A-Z]\d{6}', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3035, 'HTC-UA-BUNDLE', 'Serialized', 'Yes', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3036, 'HTC-UA-BUNDLE', 'Skype Certified', 'No', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3037, 'HTC-UA-BUNDLE', 'Software Installation Required', 'No', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3038, 'HTC-UA-BUNDLE', 'Standard Battery Charge Time', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3039, 'HTC-UA-BUNDLE', 'Standby Time', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3040, 'HTC-UA-BUNDLE', 'Talk Time', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3041, 'HTC-UA-BUNDLE', 'Total Battery Kgs', '0.1021', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));


COMMIT;
Please help. Thanks,
Mani A


and Chris said...

You need to do the pivot!

You can concatenate values with listagg in the pivot clause. Oracle Database implicitly groups by any columns not in the pivot. So select the columns you want in a subquery (i.e. exclude ID). And it'll combine the values for you:

CREATE TABLE ODS_D_ITEM_ATT_HIST
(
  ID               INTEGER,
  ITEM_CODE        VARCHAR2(128 BYTE),
  ATTRIBUTE_NAME   VARCHAR2(255 BYTE),
  ATTRIBUTE_VALUE  VARCHAR2(255 BYTE),
  LAST_MODIFIED    DATE
);

SET DEFINE OFF;
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (2996, 'HTC-UA-BUNDLE', 'Alkaline Battery Count', '4', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3044, 'HTC-UA-BUNDLE', 'Alkaline Button Cell Count', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (2998, 'HTC-UA-BUNDLE', 'Battery Form', 'Button Cell', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (2999, 'HTC-UA-BUNDLE', 'Battery Form', 'Battery', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3000, 'HTC-UA-BUNDLE', 'Battery Packaging', 'In Device', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3001, 'HTC-UA-BUNDLE', 'Battery Type', 'Li-metal', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3002, 'HTC-UA-BUNDLE', 'Battery Type', 'Alkaline', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3003, 'HTC-UA-BUNDLE', 'Battery Type', 'Li-ion/Li-polymer', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3004, 'HTC-UA-BUNDLE', 'Battery Voltage', '3.8', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3005, 'HTC-UA-BUNDLE', 'Bluetooth Software Version', 'N/A', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3006, 'HTC-UA-BUNDLE', 'Brand', 'HTC', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3007, 'HTC-UA-BUNDLE', 'COOP', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3008, 'HTC-UA-BUNDLE', 'Country of Origin', 'TW', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3009, 'HTC-UA-BUNDLE', 'Damaged and Defective Allowance', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3010, 'HTC-UA-BUNDLE', 'Extended Battery Charge Time', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3011, 'HTC-UA-BUNDLE', 'FCC ID', NULL, TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3012, 'HTC-UA-BUNDLE', 'Fused', 'No', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3013, 'HTC-UA-BUNDLE', 'Hazmat Commodity Type', 'Battery', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3014, 'HTC-UA-BUNDLE', 'Hazmat Hold', 'No', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3015, 'HTC-UA-BUNDLE', 'Hazmat Required', 'Yes', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3016, 'HTC-UA-BUNDLE', 'Hazmat UN Number', 'UN3481', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3017, 'HTC-UA-BUNDLE', 'Hazmat UN Number', 'UN3091', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3018, 'HTC-UA-BUNDLE', 'Hybrid Hazmat Count', '3', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3019, 'HTC-UA-BUNDLE', 'Kitted Item', 'No', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3020, 'HTC-UA-BUNDLE', 'Li-ion Battery Count', '1', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3021, 'HTC-UA-BUNDLE', 'Li-ion Button Cell Count', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3022, 'HTC-UA-BUNDLE', 'Li-ion Watt Hours', '0.42', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3023, 'HTC-UA-BUNDLE', 'Li-metal Battery Count', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3024, 'HTC-UA-BUNDLE', 'Li-metal Button Cell Count', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3025, 'HTC-UA-BUNDLE', 'Li-metal Grams', '3.3', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3026, 'HTC-UA-BUNDLE', 'Manufacturer', 'HTC', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3027, 'HTC-UA-BUNDLE', 'OEM', 'Yes', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3028, 'HTC-UA-BUNDLE', 'Override UOM for WorkTicket Qty?', 'Yes', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3029, 'HTC-UA-BUNDLE', 'PI Number', 'ALKIN', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3030, 'HTC-UA-BUNDLE', 'PI Number', 'PI970', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3031, 'HTC-UA-BUNDLE', 'PI Number', 'PI967', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3032, 'HTC-UA-BUNDLE', 'Packaging', 'Retail', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3033, 'HTC-UA-BUNDLE', 'Product Common Name', '99HAHN001-00', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3034, 'HTC-UA-BUNDLE', 'SRL Serial Mask', '[A-Z]{2}\d\w{2}[A-Z]\d{6}', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3035, 'HTC-UA-BUNDLE', 'Serialized', 'Yes', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3036, 'HTC-UA-BUNDLE', 'Skype Certified', 'No', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3037, 'HTC-UA-BUNDLE', 'Software Installation Required', 'No', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3038, 'HTC-UA-BUNDLE', 'Standard Battery Charge Time', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3039, 'HTC-UA-BUNDLE', 'Standby Time', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3040, 'HTC-UA-BUNDLE', 'Talk Time', '0', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
Insert into ODS_D_ITEM_ATT_HIST
   (ID, ITEM_CODE, ATTRIBUTE_NAME, ATTRIBUTE_VALUE, LAST_MODIFIED)
 Values
   (3041, 'HTC-UA-BUNDLE', 'Total Battery Kgs', '0.1021', TO_DATE('6/9/2017 10:02:41 AM', 'MM/DD/YYYY HH:MI:SS AM'));
   
select * from (
  select attribute_name, attribute_value, item_code, last_modified
  from   ODS_D_ITEM_ATT_HIST
)
pivot (
  min(item_code) ic, 
  listagg(attribute_value, '|') within group (order by attribute_value) vals
  for item_code in (
    'HTC-UA-BUNDLE' vals
  )
);

ATTRIBUTE_NAME                    LAST_MODIFIED         VALS_IC        VALS_VALS                            
OEM                               09-JUN-2017 10:02:41  HTC-UA-BUNDLE  Yes                                  
COOP                              09-JUN-2017 10:02:41  HTC-UA-BUNDLE  0                                    
Brand                             09-JUN-2017 10:02:41  HTC-UA-BUNDLE  HTC                                  
Fused                             09-JUN-2017 10:02:41  HTC-UA-BUNDLE  No                                   
FCC ID                            09-JUN-2017 10:02:41  HTC-UA-BUNDLE                                       
PI Number                         09-JUN-2017 10:02:41  HTC-UA-BUNDLE  ALKIN|PI967|PI970                    
Packaging                         09-JUN-2017 10:02:41  HTC-UA-BUNDLE  Retail                               
Talk Time                         09-JUN-2017 10:02:41  HTC-UA-BUNDLE  0                                    
Serialized                        09-JUN-2017 10:02:41  HTC-UA-BUNDLE  Yes                                  
Hazmat Hold                       09-JUN-2017 10:02:41  HTC-UA-BUNDLE  No                                   
Kitted Item                       09-JUN-2017 10:02:41  HTC-UA-BUNDLE  No                                   
Battery Form                      09-JUN-2017 10:02:41  HTC-UA-BUNDLE  Battery|Button Cell                  
Battery Type                      09-JUN-2017 10:02:41  HTC-UA-BUNDLE  Alkaline|Li-ion/Li-polymer|Li-metal  
Manufacturer                      09-JUN-2017 10:02:41  HTC-UA-BUNDLE  HTC                                  
Standby Time                      09-JUN-2017 10:02:41  HTC-UA-BUNDLE  0                                    
Li-metal Grams                    09-JUN-2017 10:02:41  HTC-UA-BUNDLE  3.3                                  
Battery Voltage                   09-JUN-2017 10:02:41  HTC-UA-BUNDLE  3.8                                  
Hazmat Required                   09-JUN-2017 10:02:41  HTC-UA-BUNDLE  Yes                                  
SRL Serial Mask                   09-JUN-2017 10:02:41  HTC-UA-BUNDLE  [A-Z]{2}\d\w{2}[A-Z]\d{6}            
Skype Certified                   09-JUN-2017 10:02:41  HTC-UA-BUNDLE  No                                   
Hazmat UN Number                  09-JUN-2017 10:02:41  HTC-UA-BUNDLE  UN3091|UN3481                        
Battery Packaging                 09-JUN-2017 10:02:41  HTC-UA-BUNDLE  In Device                            
Country of Origin                 09-JUN-2017 10:02:41  HTC-UA-BUNDLE  TW                                   
Li-ion Watt Hours                 09-JUN-2017 10:02:41  HTC-UA-BUNDLE  0.42                                 
Total Battery Kgs                 09-JUN-2017 10:02:41  HTC-UA-BUNDLE  0.1021                               
Hybrid Hazmat Count               09-JUN-2017 10:02:41  HTC-UA-BUNDLE  3                                    
Product Common Name               09-JUN-2017 10:02:41  HTC-UA-BUNDLE  99HAHN001-00                         
Li-ion Battery Count              09-JUN-2017 10:02:41  HTC-UA-BUNDLE  1                                    
Hazmat Commodity Type             09-JUN-2017 10:02:41  HTC-UA-BUNDLE  Battery                              
Alkaline Battery Count            09-JUN-2017 10:02:41  HTC-UA-BUNDLE  4                                    
Li-metal Battery Count            09-JUN-2017 10:02:41  HTC-UA-BUNDLE  0                                    
Li-ion Button Cell Count          09-JUN-2017 10:02:41  HTC-UA-BUNDLE  0                                    
Alkaline Button Cell Count        09-JUN-2017 10:02:41  HTC-UA-BUNDLE  0                                    
Bluetooth Software Version        09-JUN-2017 10:02:41  HTC-UA-BUNDLE  N/A                                  
Li-metal Button Cell Count        09-JUN-2017 10:02:41  HTC-UA-BUNDLE  0                                    
Extended Battery Charge Time      09-JUN-2017 10:02:41  HTC-UA-BUNDLE  0                                    
Standard Battery Charge Time      09-JUN-2017 10:02:41  HTC-UA-BUNDLE  0                                    
Software Installation Required    09-JUN-2017 10:02:41  HTC-UA-BUNDLE  No                                   
Damaged and Defective Allowance   09-JUN-2017 10:02:41  HTC-UA-BUNDLE  0                                    
Override UOM for WorkTicket Qty?  09-JUN-2017 10:02:41  HTC-UA-BUNDLE  Yes  


Read more about pivoting at:

https://blogs.oracle.com/sql/how-to-convert-rows-to-columns-and-back-again-with-sql-aka-pivot-and-unpivot

PS - it helps if your create table has the same name and columns as your inserts...

Rating

  (1 rating)

Is this answer out of date? If it is, please let us know via a Comment

Comments

Manikandan Arunachalam, June 12, 2017 - 5:21 pm UTC

Thank you!

I have used like this for my processing
SELECT item_code
,attribute_name
,listagg(attribute_value,'|') WITHIN GROUP (ORDER BY item_code,attribute_name)
,last_modified
FROM ODS_D_ITEM_ATT_HIST t1
where ITEM_CODE IN ('HTC-UA-BUNDLE')
GROUP BY item_code, attribute_name, last_modified