У меня есть данные, исходящие в мою систему (формат не может быть изменен) выглядят как так:Oracle 11g - Столбцы рядов
Row, C001, C002, C003, to C029 (Columns for FY values)
1, Name, 0910, 1011
2, Eqt1 (Speed), 60, 100
3, Eqt1 (Cost), 20, 30
4, Eqt2 (Speed), 50, 60
5, Eqt2 (Cost), 30, 45
мне нужно изменить в:
Name, Start_Date, End_Date, Speed, Cost
Eqt1, 01-APR-2009, 30-MAR-2010, 60, 20
Eqt1, 01-APR-2010, 30-MAR-2011, 100, 30
Eqt2, 01-APR-2009, 30-MAR-2010, 50, 30
Eqt2, 01-APR-2010, 30-MAR-2011, 60, 45
можно разделить дата, используя подвыбор, где строка = 1. Я могу заменить (скорость) (стоимость) на имя. Но я не могу понять.
WITH survey_query AS (
SELECT *
FROM tbl_data
)
SELECT (CASE WHEN upper(sq.c001) LIKE '%FLEET SIZE%' THEN TRIM(REPLACE(upper(sq.c001), 'FLEET SIZE', ''))
WHEN upper(sq.c001) LIKE '%FLYING HOURS%' THEN TRIM(REPLACE(upper(sq.c001), 'FLYING HOURS', ''))
END) equipment_name
,(select TO_DATE(2000+dbms_lob.substr(c002,2,1)||'0101', 'yymmdd') FROM survey_query where line = 1) start_date
,(select TO_DATE(2000+dbms_lob.substr(c002,2,4)||'0330', 'yymmdd') FROM survey_query where line = 1) end_date
,(case when UPPER(sq.c001) like '%FLEET SIZE%' THEN sq.c002 END) fleet_size
,(case when UPPER(sq.c001) like '%FLYING HOURS%' THEN sq.c002 END) flying_hours
FROM survey_query sq
WHERE line > 1
UNION
SELECT (CASE WHEN upper(sq.c001) LIKE '%FLEET SIZE%' THEN TRIM(REPLACE(upper(sq.c001), 'FLEET SIZE', ''))
WHEN upper(sq.c001) LIKE '%FLYING HOURS%' THEN TRIM(REPLACE(upper(sq.c001), 'FLYING HOURS', ''))
END) equipment_name
,(select TO_DATE(2000+dbms_lob.substr(c003,2,1)||'0101', 'yymmdd') FROM survey_query where line = 1) start_date
,(select TO_DATE(2000+dbms_lob.substr(c003,2,4)||'0330', 'yymmdd') FROM survey_query where line = 1) end_date
,(case when UPPER(sq.c001) like '%FLEET SIZE%' THEN sq.c003 END) fleet_size
,(case when UPPER(sq.c001) like '%FLYING HOURS%' THEN sq.c003 END) flying_hours
FROM survey_query sq
WHERE line > 1;
Любые идеи, пожалуйста? Там надо быть лучше, как и у меня 28 колонок стоит данных так будет бардак с 27 «союзами»
Благодарности
Похож сложной комбинацией [UNPIVOT] (http://stackoverflow.com/q/25077011/521799) и [ось] (HTTP: // stackoverflow.com/q/4841718/521799) –