2016-02-14 9 views
0

Как отображать несколько записей в одной строке в oracle без создания хранимой процедуры?Отображение значений из нескольких записей в одной строке

Набор данных:

Name  Job Update_date 
Armstrong IDE 07/02/2014 
Armstrong IDE 05/02/2015 
Armstrong IDEC 03/02/2016 
Armstrong LT  14/02/2016 
Beyonce  LT  12/02/2015 
Beyonce  LTC 12/02/2016 
Deadpool LT  05/02/2015 

Желаемый результат:

Name  IDE   IDEC  LT   LTC 
Armstrong 05/02/2015 03/02/2016 14/02/2016 null 
Beyonce  null  null  12/02/2015 12/02/2016 
Deadpool null  null  05/02/2015 null 

Для каждого задания я должен иметь самую большую дату

Решение, которое я вижу, чтобы создать временную таблицу Иова и сделать союз с именем !!

ответ

1

Oracle Настройка:

CREATE TABLE Data_Set (Name, Job, Update_date) AS 
SELECT 'Armstrong', 'IDE', DATE '2014-02-07' FROM DUAL UNION ALL 
SELECT 'Armstrong', 'IDE', DATE '2015-02-05' FROM DUAL UNION ALL 
SELECT 'Armstrong', 'IDEC', DATE '2016-02-03' FROM DUAL UNION ALL 
SELECT 'Armstrong', 'LT',  DATE '2016-02-14' FROM DUAL UNION ALL 
SELECT 'Beyonce',  'LT',  DATE '2015-02-12' FROM DUAL UNION ALL 
SELECT 'Beyonce',  'LTC', DATE '2016-02-12' FROM DUAL UNION ALL 
SELECT 'Deadpool', 'LT',  DATE '2015-02-05' FROM DUAL; 

Запрос:

SELECT Name, 
     MAX(CASE JOB WHEN 'IDE' THEN Update_Date END) AS IDE, 
     MAX(CASE JOB WHEN 'IDEC' THEN Update_Date END) AS IDEC, 
     MAX(CASE JOB WHEN 'LT' THEN Update_Date END) AS LT, 
     MAX(CASE JOB WHEN 'LTC' THEN Update_Date END) AS LTC 
FROM Data_Set 
GROUP BY Name 
ORDER BY Name; 

Результаты:

NAME  IDE  IDEC  LT  LTC  
--------- --------- --------- --------- --------- 
Armstrong 05-FEB-15 03-FEB-16 14-FEB-16   
Beyonce      12-FEB-15 12-FEB-16 
Deadpool      05-FEB-15   
+0

благодарит за помощь – YATK

1

Что-то вроде этого должно быть сделано, если вы точно знаете, какие значения могут быть найдены в Job. И в 11G или новее, да.

SELECT Name, 
     IDE, 
     IDEC, 
     LT, 
     LTC 
FROM YOUR_TABLE 
PIVOT (
    MAX(Update_date) 
    FOR Job IN ('IDE' AS IDE, 
       'IDEC' AS IDEC, 
       'LT' AS LT, 
       'LTC' AS LTC)) 
+0

спасибо за помощь – YATK

Смежные вопросы