【发布时间】:2019-03-15 15:13:26
【问题描述】:
我有一个 sql 语句,我想在其中选择日期的最小值:
SELECT EEEV_EMPL_ID, MIN(EEEV_DT), prev
但我不想在 min 中包含 prev 列,但我希望在结果中包含该列。所以说我有
1 3/5/2018 UB3
1 5/28/2018 4A
其中第一列是员工 ID,第二列是日期,第三列是 prev。如果我这样做,将返回两行,因为 prev 列不同。我只想返回具有最小日期的行,而不管上一列是否不同。我该怎么做?
这是完整的声明:
SELECT EEEV_EMPL_ID, EEEV_DT, prev
FROM (
SELECT EEEV_EMPL_ID, EEEV_DT, EEEV_CCTR_ID,LAG(EEEV_CCTR_ID)
OVER(ORDER BY EEEV_EMPL_ID DESC, EEEV_DT DESC) AS prev
FROM CDAS.VDWHEEEV1 eeev1
WHERE extract(year from eeev1.eeev_dt) =
(select extract(year from sysdate) from dual)
ORDER BY EEEV_EMPL_ID
) x
GROUP BY EEEV_EMPL_ID, prev
ORDER BY EEEV_EMPL_ID
这是一个 oracle 查询,但我将在 sql server 的 OPENQUERY 中使用它。
更新:
好的,所以有些人不清楚,让我试试这个:
00012662 3/5/18 2C
00012662 5/28/18 UB3
00037465 3/19/18 PA
00037465 5/28/18 UB
...
我想要返回这两行。对于每个员工,我想要最小日期值行。但是因为第三列不同,所以最小日期值会返回每一行。不知道如何更简单地问它。
00012662 3/5/18 2C
00037465 3/19/18 PA
【问题讨论】:
-
答案从here开始
-
想象这个问题不是你的,阅读它并尝试理解它并回答它。可以吗?
-
我读过,对我来说很有意义。我无法回答它,因为我是那个问它的人。
-
我认为没有人能理解例如这部分:但我不想在 min 中包含 prev 列,但我希望在结果中包含该列, mybe 示例数据和预期结果将是最好的解释。
-
@dk96m 当然你可以在这里回答你自己的问题。这将不胜感激。
标签: sql sql-server oracle openquery