【发布时间】:2018-06-12 07:05:51
【问题描述】:
这是我目前的情况:我有一系列相互构建的子查询。我有员工的工作是写日志。然后对这些日志进行审查和编辑,我只想提取最近的编辑(因为每个相应的编辑都连接在它之前的编辑之上。
因此,如果我在上午 10:00 编辑它,然后在上午 11:00 进行编辑,则上午 11:00 的编辑还将包含上午 10:00 的文本,但两个值都已存储。这就是我们的系统存储信息的方式……无法更改)。但是,如果我将这两个表连接在一起,它会提取给定日志的所有编辑。
我的问题是我有多个日志,并且只想为每个日志提取最新的 EDIT。我尝试了以下哪种方法有效,但它只提取了 OVERALL 最近的编辑,而不是 EACH 日志的最新编辑:
-- I have WITH and the other subqueries above...
sqEDITS AS
(
SELECT
Othertable.*, EDIT_TXT
FROM
Othertable
LEFT JOIN
EDITS ON Othertable.LOG_NO = EDITS.EDIT_LOG_NO
WHERE
EDIT_ACTIVITY_DT = (SELECT MAX(EDITS.EDIT_ACTIVITY_DT)
FROM Othertable, EDITS
WHERE Othertable.LOG_NO = EDITS.EDIT_LOG_NO) -- end where
) --end sqEDITS
在我的测试集中,有 35 个独特的日志,每个日志应该返回 35 个最近的编辑(如果存在的话)。
我的另一个问题是我试图提取的 TEXT 数据类型是 CLOB,这使得它很难使用。
任何建议将不胜感激。我肯定被难住了。谢谢!
【问题讨论】:
-
验证您的专栏! (EDIT_ACTIVITY_DT 列属于哪个表?)
-
EDITS,所以完整的表将是 EDITS.EDIT_ACTIVITY_DT 我现在将进行这些更改。谢谢你的建议。
-
将该条件从 WHERE 移至 ON。 (即只需将 WHERE 替换为 AND。)
-
嗨,贾尔。那没有用
标签: sql oracle join greatest-n-per-group