select 在 oracle 中到 return 最新行
select in an oracle to return the newest row
我有一个票务系统 (itsm),我需要 return 来自 table 的最新记录以及同一张票的许多其他记录。
上图可以看到select的输出(我贴在下面)。
意识到 PBTI_WORKORDER_ID 列显示票证 ID,而我要做的只是显示最大的 request_id(图像的第一行)。
select是:
SELECT
MAX(REQUEST_ID),
(PBTI_WORKORDER_ID),
PBTI_IDREQUISICAO,
TO_CHAR(SECS_TO_DATE(PBTI_DTABERTURA),'DD/MM/YYYY HH24:MI:SS') AS DATA_CRIACAO,
PBTI_GRUPOSUPORTEATUAL AS GRUPO_ATUAL,
TO_CHAR(SECS_TO_DATE(PBTI_DATAENTRADAGRUPO),'DD/MM/YYYY') AS DATA_ENTRADA,
TO_CHAR(SECS_TO_DATE(PBTI_DATASAIDAGRUPO),'DD/MM/YYYY') AS DATA_SAIDA_GRUPO,
PBTI_PROXIMOGRUPOSUPORTE AS PROXIMO_GRUPO,
REQUEST_ASSIGNEE,
CATEGORIZATION_TIER_1,
CATEGORIZATION_TIER_2,
CATEGORIZATION_TIER_3,
CUSTOMER_ORGANIZATION,
PBTI_MCU_ORG
FROM PBTI_TABELA_INDICADORES
WHERE PBTI_GRUPOSUPORTEATUAL = 'CENTRAL HD - TRATAMENTO'
GROUP BY (REQUEST_ID),
(PBTI_WORKORDER_ID),
(PBTI_IDREQUISICAO),
(PBTI_DTABERTURA),
(PBTI_GRUPOSUPORTEATUAL),
(PBTI_DATAENTRADAGRUPO),
(PBTI_DATASAIDAGRUPO),
(PBTI_PROXIMOGRUPOSUPORTE),
(REQUEST_ASSIGNEE),
(CATEGORIZATION_TIER_1),
(CATEGORIZATION_TIER_2),
(CATEGORIZATION_TIER_3),
(CUSTOMER_ORGANIZATION),
(PBTI_MCU_ORG)
ORDER BY PBTI_DATAENTRADAGRUPO DESC;
MAX(用于 select 子句)应该只带第一行,不是吗?
谢谢
实现此目的的一种方法是生成一组数据,其中包含每张票 (B) 的最大值 request_ID。然后,将该集合与所有记录一起连接回基集 (A),从而使用连接仅保留每个票证/请求的相关 "newest" 记录。
像这样..
SELECT A.*
FROM PBTI_TABELA_INDICADORES A
INNER JOIN (SELECT max(request_ID) Request_Id, PBTI_WorkORder_Id, PBTI_IDREQUISICAO
FROM PBTI_TABELA_INDICADORES
GROUP BY PBTI_WorkORder_Id, PBTI_IDREQUISICAO) B
on A.Request_Id = B.Request_Id
and A.PBTI_WorkORder_Id = B.PBTI_WorkORder_Id
and A.PBTI_IDREQUISICAO = B.PBTI_IDREQUISICAO
我有一个票务系统 (itsm),我需要 return 来自 table 的最新记录以及同一张票的许多其他记录。
上图可以看到select的输出(我贴在下面)。 意识到 PBTI_WORKORDER_ID 列显示票证 ID,而我要做的只是显示最大的 request_id(图像的第一行)。
select是:
SELECT
MAX(REQUEST_ID),
(PBTI_WORKORDER_ID),
PBTI_IDREQUISICAO,
TO_CHAR(SECS_TO_DATE(PBTI_DTABERTURA),'DD/MM/YYYY HH24:MI:SS') AS DATA_CRIACAO,
PBTI_GRUPOSUPORTEATUAL AS GRUPO_ATUAL,
TO_CHAR(SECS_TO_DATE(PBTI_DATAENTRADAGRUPO),'DD/MM/YYYY') AS DATA_ENTRADA,
TO_CHAR(SECS_TO_DATE(PBTI_DATASAIDAGRUPO),'DD/MM/YYYY') AS DATA_SAIDA_GRUPO,
PBTI_PROXIMOGRUPOSUPORTE AS PROXIMO_GRUPO,
REQUEST_ASSIGNEE,
CATEGORIZATION_TIER_1,
CATEGORIZATION_TIER_2,
CATEGORIZATION_TIER_3,
CUSTOMER_ORGANIZATION,
PBTI_MCU_ORG
FROM PBTI_TABELA_INDICADORES
WHERE PBTI_GRUPOSUPORTEATUAL = 'CENTRAL HD - TRATAMENTO'
GROUP BY (REQUEST_ID),
(PBTI_WORKORDER_ID),
(PBTI_IDREQUISICAO),
(PBTI_DTABERTURA),
(PBTI_GRUPOSUPORTEATUAL),
(PBTI_DATAENTRADAGRUPO),
(PBTI_DATASAIDAGRUPO),
(PBTI_PROXIMOGRUPOSUPORTE),
(REQUEST_ASSIGNEE),
(CATEGORIZATION_TIER_1),
(CATEGORIZATION_TIER_2),
(CATEGORIZATION_TIER_3),
(CUSTOMER_ORGANIZATION),
(PBTI_MCU_ORG)
ORDER BY PBTI_DATAENTRADAGRUPO DESC;
MAX(用于 select 子句)应该只带第一行,不是吗?
谢谢
实现此目的的一种方法是生成一组数据,其中包含每张票 (B) 的最大值 request_ID。然后,将该集合与所有记录一起连接回基集 (A),从而使用连接仅保留每个票证/请求的相关 "newest" 记录。
像这样..
SELECT A.*
FROM PBTI_TABELA_INDICADORES A
INNER JOIN (SELECT max(request_ID) Request_Id, PBTI_WorkORder_Id, PBTI_IDREQUISICAO
FROM PBTI_TABELA_INDICADORES
GROUP BY PBTI_WorkORder_Id, PBTI_IDREQUISICAO) B
on A.Request_Id = B.Request_Id
and A.PBTI_WorkORder_Id = B.PBTI_WorkORder_Id
and A.PBTI_IDREQUISICAO = B.PBTI_IDREQUISICAO