我只有基本的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
)
如果某人确实有回应,那么如果有人尽可能使用非专业语言会很好。我只有一个编码类。非常感谢。
答案 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;