У меня есть запрос, который показывает время входа и выхода автомобиля в один столбец с двумя строками времени входа и выхода. Я хотел показать это в один ряд как вовремя, так и вне времени. Вот мой запрос
SELECT
RowNum as sr,
agent_name,
agency_name,
TO_CHAR(ISSUEDATETIME, 'dd-mm-yyyy HH12:MI:SS PM') as issueddatetime,
action,
TIME,
gate,
passnumber,
cardnumber,
vehicletype,
(ROUND((MAX_TIME - MIN_TIME)*24, 2)) AS DURATION
FROM
(
SELECT T.*,
CASE
WHEN T.ACTION = 'IN' THEN ROW_NUMBER() OVER(
PARTITION BY AGENT_ID, TRUNC(TO_DATE(TIME, 'dd-mm-yyyy hh12:mi:ss PM'))
ORDER BY
TO_DATE(TIME, 'dd-mm-yyyy hh12:mi:ss PM')
)
END AS IN_TIME_RN,
CASE
WHEN T.ACTION = 'OUT' THEN ROW_NUMBER() OVER(
PARTITION BY AGENT_ID, TRUNC(TO_DATE(TIME, 'dd-mm-yyyy hh12:mi:ss PM'))
ORDER BY TO_DATE(TIME, 'dd-mm-yyyy hh12:mi:ss PM')
DESC
)
END AS OUT_TIME_RN,
MIN(CASE
WHEN T.ACTION = 'IN' THEN TO_DATE(TIME, 'dd-mm-yyyy hh12:mi:ss PM')
END) OVER(
PARTITION BY AGENT_ID, TRUNC(TO_DATE(TIME, 'dd-mm-yyyy hh12:mi:ss PM'))
) AS MIN_TIME,
MAX(CASE
WHEN T.ACTION = 'OUT' THEN TO_DATE(TIME, 'dd-mm-yyyy hh12:mi:ss PM')
END) OVER(
PARTITION BY AGENT_ID, TRUNC(TO_DATE(TIME, 'dd-mm-yyyy hh12:mi:ss PM'))
) AS MAX_TIME
FROM
(
SELECT
eofficeuat.entrylog_vehicle.agent_id,
eofficeuat.cnf_agents.agent_name,
eofficeuat.gatepass.agency_name,
eofficeuat.gatepass.agency_id,
TO_CHAR(eofficeuat.entrylog_vehicle.scantime, 'dd-mm-yyyy HH12:MI:SS PM') as Time,
eofficeuat.entrylog_vehicle.action,
eofficeuat.gatelist.shortname as gate,
eofficeuat.entrylog_vehicle.passnumber,
eofficeuat.entrylog_vehicle.cardnumber,
eofficeuat.gatepass.vehicletype,
eofficeuat.gatepass.ISSUEDATETIME
FROM
eofficeuat.entrylog_vehicle
INNER JOIN eofficeuat.cnf_agents ON eofficeuat.entrylog_vehicle.agent_id = eofficeuat.cnf_agents.agent_id
INNER JOIN eofficeuat.gatelist ON eofficeuat.entrylog_vehicle.gate_id = eofficeuat.gatelist.id
INNER JOIN eofficeuat.gatepass ON eofficeuat.entrylog_vehicle.passnumber = eofficeuat.gatepass.id
WHERE
eofficeuat.entrylog_vehicle.scantime between TO_DATE ('08/10/2019', 'dd/mm/yyyy') and TO_DATE ('15/10/2019', 'dd/mm/yyyy')
ORDER BY Time asc
)T
)
WHERE
TO_DATE(TIME, 'dd-mm-yyyy hh12:mi:ss PM') IN (
MIN_TIME,
MAX_TIME
)
and
(ROUND((MAX_TIME - MIN_TIME)*24, 2)) is not null
and
(ROUND((MAX_TIME - MIN_TIME)*24, 2)) > 0
Здесь поставлен этот запрос
Agency_name Action Time
=========== ======= ===========================
Luna Corporation In 09-10-2019 04:03:06 PM
Luna Corporation Out 09-10-2019 04:32:49 PM
Но я хотел вот так
Agency_name In Out
=========== ======= ======
Luna Corporation 09-10-2019 04:03:06 PM 09-10-2019 04:03:06 PM
, чтобы две строки были объединены в одну строкус двумя разными столбцами In и Out