获取具有2个条件或分组或子查询的最大(日期)或最新日期

时间:2017-07-10 22:20:17

标签: sql subquery limit getlatest

我只有基本的SQL技能。我在Navicat的SQL中工作。我已经查看了那些也试图获取最新日期的人的线索,但还未能将其应用到我的情况中。

我正在尝试为每种化学品获取每个名称的最新日期。我这样想:"在每种化学品中,查看每个名称的数据,选择最新的名称。"

我尝试过使用max(date(date)),但它需要在化学品中嵌套或子化。

我还尝试按date(date) DESC排名,然后使用LIMIT 1。但我也无法将其嵌入化学品中。

当我尝试将其写为子查询时,我一直在(上收到错误。我已将其切换为以便以多种不同的方式开始子查询,但错误总是在该区域附近返回。

以下是数据的样子: 1 这是我失败的查询之一:

SELECT
   WELL_NAME,
   CHEMICAL,
   RESULT,
   APPROX_LAT,
   APPROX_LONG,
   DATE

FROM
   data_all
ORDER BY
   CHEMICAL ASC,
   date( date ) DESC (
SELECT
   WELL_NAME,
   CHEMICAL,
   APPROX_LAT,
   APPROX_LONG,
   DATE 
FROM
   data_all 
WHERE
   WELL_NAME = WELL_NAME 
   AND CHEMICAL = CHEMICAL 
   AND APPROX_LAT = APPROX_LAT 
   AND APPROX_LONG = APPROX_LONG,

LIMIT 2 
)

如果某人确实有回应,那么如果有人尽可能使用非专业语言会很好。我只有一个编码类。非常感谢。

2 个答案:

答案 0 :(得分:1)

也许是这样的?

SELECT WELL_NAME, CHEMICAL, MAX(DATE)
FROM data_all
GROUP BY WELL_NAME, CHEMICAL

答案 1 :(得分:0)

如果您需要所有信息,请使用ANSI标准ROW_NUMBER()

SELECT da.*
FROM (SELECT da.*
             ROW_NUMBER() OVER (PARTITION BY chemical, name ORDER BY date DESC) as senum
      FROM data_all da
     ) da
WHERE seqnum = 1;