[英]Reporting values from multiple records in one row
How can I displaying multiple records in one row in oracle without creating a stored procedure? 如何在不创建存储过程的情况下在oracle中一行显示多个记录?
Data Set: 资料集:
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
Desired Result: 所需结果:
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
For each job I must have the biggest dates 我必须为每项工作安排最长时间的约会
The solution I see is to create a temporary table by Job and make union with name!! 我看到的解决方案是通过Job创建一个临时表并使用名称进行联合!
Something like this should do provided you know exactly which values can be found in Job
. 只要您确切知道可以在
Job
找到哪些值,就应该执行类似的操作。 And in 11G or newer, yes. 在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))
Oracle Setup : 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;
Query : 查询 :
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;
Results : 结果 :
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.