WITH t(dt,col1,col2,col3,col4,col5,col6) AS ( SELECT '2017-01-01',1001,1002,1003,1004,1005,1006 FROM DUAL UNION ALL SELECT '2017-02-01',2001,2002,2003,2004,2005,2006 FROM DUAL ) SELECT * FROM t UNPIVOT(text FOR gb IN (col1,col2,col3,col4,col5,col6)) PIVOT(MIN(text) FOR dt IN ('2017-01-01','2017-02-01'))