【发布时间】:2019-02-09 20:24:32
【问题描述】:
我试图在 Access 中进行查询,从表中选择 MAX 日期,该日期小于表中特定其他记录的日期,我必须检查该记录是否存在。
我知道描述有点混乱,所以我会尝试用伪代码解释它:
If(Record exists where editing_type = "Notranja kontrola")
SELECT MAX(created_at) that is smaller than ( MIN(created_at) Where
editing_type = "Notranja kontrola")
WHERE editing_type = "Zajem"
如果editing_type = "Notranja kontrola" 的记录不存在,我不想选择日期。我想返回NULL。
如果是这样,我想选择最大日期 where editing_type = "Zajem",小于 MIN(date) WHERE editing_type = "Notranja kontrola")
我想出的查询:
SELECT
spr.ob_id AS Obcina,
spr.ko,
'DA' AS Dodeljeno,
(
SELECT MAX(created_at)
FROM (
SELECT created_at
FROM spremljanje_uporabnik_zajem
WHERE created_at < (
SELECT MIN(created_at)
FROM spremljanje_uporabnik_zajem
WHERE editing_type = "Notranja kontrola" AND ko = spr.ko AND VAL(ko) BETWEEN 0 AND 9999
)
)
WHERE editing_type = "zajem" AND ko = spr.ko AND VAL(ko) BETWEEN 0 AND 9999
AND EXISTS (
SELECT 1
FROM spremljanje_uporabnik_zajem
WHERE editing_type = "Notranja kontrola" AND ko = spr.ko AND VAL(ko) BETWEEN 0 AND 9999
)
) AS [krneki],
(SELECT
.....
)
FROM spremljanje_uporabnik_zajem AS spr
WHERE VAL(ko) BETWEEN 0 AND 9999
GROUP BY spr.ob_id, spr.ko
ORDER BY Val(spr.ko);
WHERE VAL(ko) BETWEEN 0 AND 9999 部分仅用于检查条目是否有效。
当我尝试运行查询时,我收到一个提示,要求我输入 spr.ko,而不是将其作为外部查询的值。 我该如何解决这个问题?
外部查询在那里,因为我还需要选择一些其他的东西。
编辑 + EDIT2: 我只从表“spremlanje_uporabniki_zajem”中选择
样本数据(spremlanje_uporabniki_zajem):
ob_id ko editing_type created_at
40 100 zajem 1.01.2018
40 100 zajem 2.01.2018
40 100 notranja kontrola 3.01.2018
40 100 zajem 4.01.2018
90 550 zajem 2.01.2018
40 100 zajem 6.01.2018
40 20 zajem 7.01.2018
40 20 zajem 8.01.2018
40 20 notranja kontrola 9.01.2018
40 20 zajem 10.01.2018
40 100 zajem 11.01.2018
40 20 zajem 12.01.2018
40 20 notranja kontrola 13.01.2018
40 100 notranja kontrola 13.01.2018
Expected REXPECTED RESULT:
ob_id ko Dodeljeno krneki
40 100 DA 2.01.2018
90 550 DA NULL
40 20 DA 8.01.2018
谢谢
【问题讨论】:
-
向我们展示数据库架构、示例数据、当前和预期输出。请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。 How to create a Minimal, Complete, and Verifiable example
-
以文本形式发布表格和数据READ THIS
-
抱歉,我知道我的问题令人困惑,但我不知道如何更好地解释它,英语不是我的主要语言。我将 datat 添加为文本。
-
更多数据示例也有助于理解问题。并使用您的示例数据解释逻辑。包括多个
kontrola行,以便我们可以看到 MIN、MAX 限制 -
要格式化为
code,选择文本并按ctrl-k或在每行前添加4个空格