Хотя не совсем так, как вы себе это представляли, я нашел решение. По сути, вам нужно будет создать новый столбец в исходной таблице с именем уникальный идентификатор. Это уникальный идентификатор, под которым вы будете поворачивать таблицу.
После этого вам нужно будет использовать следующий запрос для получения почти желаемого результата:
SELECT * FROM
(
SELECT
unique_id,
e_nm,
val
FROM table1
)
PIVOT
(
listagg(val) within group (order by null) as id, listagg(e_nm) within group (order by null) as id_e_nm
FOR e_nm IN ('Fruit Date','Salad Date','Test Date')
)
Это даст вам следующий вывод:
body {
margin: 0;
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
font-size: 14px;
line-height: 20px;
color: #333;
background-color: #fff;
}
<table class="results table table-bordered table-striped">
<tbody>
<tr>
<th>UNIQUE_ID</th>
<th>'Fruit Date'_ID</th>
<th>'Fruit Date'_ID_E_NM</th>
<th>'Salad Date'_ID</th>
<th>'Salad Date'_ID_E_NM</th>
<th>'Test Date'_ID</th>
<th>'Test Date'_ID_E_NM</th>
</tr>
<tr>
<td>1</td>
<td>20180115</td>
<td>Fruit Date</td>
<td>ABC</td>
<td>Salad Date</td>
<td>20181115</td>
<td>Test Date</td>
</tr>
<tr>
<td>2</td>
<td>20180504</td>
<td>Fruit Date</td>
<td>(null)</td>
<td>(null)</td>
<td>19991001</td>
<td>Test Date</td>
</tr>
</tbody>
</table>
Здесь - ссылка на запрос SQL Fiddle, который я создал для ответа на ваш вопрос.
Надеюсь, это направит вас в правильном направлении:)