使用 MAX 时检索其他列

Retrieving other columns when using MAX

我有一个名为 CEV_CLM_EV 的 table,用于保存事件的状态。我想尝试提取 MAX 事件,但我想在查询的其他地方使用 CEV_TYPE。这是提取所有内容的查询:

SELECT
        CEV_CLM_ID,
        CEV_TYPE,
        CEV_ADD_TS
FROM
        CEV_CLM_EV
WHERE 
        CEV_CLM_ID = 403083306;

结果:

CEV_CLM_ID  CEV_TYPE CEV_ADD_TS                
----------- -------- --------------------------
  403083306 O        2015-03-11-10.03.51.412566
  403083306 O        2015-03-11-10.04.27.102384
  403083306 DN       2015-03-11-10.04.27.733790

如果我要 MAX(CEV_ADD_TS),我需要仅按无效的 CEV_CLM_ID 进行分组。但是如果我按 CEV_CLM_IDCEV_TYPE 分组,我会得到像这样的重复项:

SELECT
        CEV_CLM_ID,
        CEV_TYPE,
        MAX(CEV_ADD_TS)
FROM
        CEV_CLM_EV
WHERE 
        CEV_CLM_ID = 403083306
GROUP BY
        CEV_CLM_ID,
        CEV_TYPE

结果:

CEV_CLM_ID  CEV_TYPE 3                         
----------- -------- --------------------------
  403083306 DN       2015-03-11-10.04.27.733790
  403083306 O        2015-03-11-10.04.27.102384

如果我没看错,您想要特定 cev_clm_id 的最大日期时间,并获取与最大日期时间匹配的关联 cev_type?

如果是这样,那么您不能通过简单的查询来完成:

SELECT *
FROM CEV_CLM_EV AS source
LEFT JOIN (
    SELECT CEV_CLM_ID, MAX(CEV_ADD_TS) AS timestamp
    FROM CEV_CLM_EV
    GROUP BY CEV_CLM_ID
) AS maxes ON
        (source.CEV_CLM_ID = maxes.CEV_CLM_ID )
    AND (source.CEV_ADD_TD = maxes.timestamp)

子查询获取最大时间戳及其关联的 ID,然后外部查询根据该时间戳和 ID 进行连接以获取其余的关联数据。