0
我对查询有一些麻烦。该查询用于获取Article Nr。和修改日期。之后我们生成一份报告。直到现在,它工作得很好。Oracle查询 - 上次更新日期多个项目
对于每个产品将有4个日期的阶段。 不幸的是在数据库中有时会超过4个阶段。在某些情况下,产品会通过两次处理。这意味着有8个日期的8个阶段。 什么,我试图让:
- 的列表,包括一些产品
- 最新阶段(最年轻的日期)
- 忽略,如果退出历史最悠久的生产步骤
这是我的代码, (我创建伪代码
我试图混合Artikel号码和日期(concat()
)。 获取一个唯一的字符串。
但它不能很好地工作(高处理时间)。
SELECT
*
FROM
(
SELECT
/* Some Calculations & Cases and Critera */
FROM
(
SELECT
/* Get the Product Columns */
ArtNumber,
modDate,
weight
FROM
/* four different Tables */
WHERE
/* Criterialist to get the Products */
modDate>sysdate -360
/* what i think, that can solve the Problem */
AND CONCAT(ArtNumber, modDate) IN
(
SELECT DISTINCT
ArtNumber
FROM
WHERE
(
stateentrytime >sysdate - 13
AND stateentrytime<sysdate - 5
)
(
SELECT
MAX(modTime) AS highestDate,
ArtNumber,
CONCAT (ArtNumber, modTime) AS ArtMod
FROM
WHERE
/* Criterialist to get the Products */
AND ArtNumber IN
(
SELECT
ArtNumber
FROM
WHERE
modTime>sysdate -360
GROUP BY
h.ArtNumber
)
GROUP BY
h.ArtNumber,
CONCAT (ArtNumber, modTime)
)
)
)
ftd ,
WHERE
/* Criterialist to get the Products */
)
WHERE
/* more Criteria */
你有什么提示吗? 为
- 获得创建ModDate
- 优化查询
我期待什么:
ArtNumber | modTime
--------- | -------
12345 | 23.08.2016
12346 | 20.07.2016
12347 | 23.05.2016
12348 | 23.03.2016
- 一个日期为一个项目
我得到什么:
ArtNumber | modTime
--------- | -------
12345 | 23.08.2016
12346 | 20.07.2016
12345 | 23.05.2016
12346 | 23.03.2016
- 同一项目编号
- 不同日期
的问题是,当我试图让MAX。我只拿到具有最高日期的项目。
非常感谢菲尔
欢迎堆栈溢出。您的查询不具有远程可读性。你可以请修复格式? –
你说每个项目有四个阶段。 (我想像计划中的东西 - >订购 - >库存 - >售完,或者按照这些行列出的东西)。但是,您想要展示的每件产品都是最后一个阶段的日期?你甚至不想看到它在哪个阶段?这不是简单的'选择artnumber,max(stateentrytime)从...哪里...按artnumber'分组? –