我在旅途中学习,非常感谢你能给我的任何帮助。 我需要在“问题日志”表中计算记录的首次出现。
每周一次将原始数据添加到表中。如果下一次运行解决了问题,它将被省略,但如果问题仍然存在,则会在表中附加新记录。
我需要在问题首次出现时填充新列。挑战在于,如果在前一次运行中省略了记录,则计数器“重置”。
table example - 每周添加一次记录(可以在不同的日期进行),如果某些字段(在本例中为“country”和“material”)之间存在匹配,则记录为重复记录需要填充的列是“第一个外观”列。
任何帮助表示赞赏! :)
编辑 - 只是为了澄清,我不是在寻找一个代码,只是一个关于如何解决这个问题的想法。我正在考虑将上一个报告的日期添加为附加列,其中VB计算每个连续的外观,但似乎可能有一个更简单的解决方案。欢迎任何想法,谢谢!
答案 0 :(得分:0)
假设您的屏幕截图是Access表格(表1)的表示,那么您需要选择 MIN 每个 GROUP 的最终日期国家和地区材料字段 FROM 表1。
尝试:
SELECT MIN(dDate) AS First_Appearance,
Country,
Material
FROM Table1
GROUP BY Country,
Material
ORDER BY MIN(dDate)
修改强>
根据您的示例数据,您应该只显示罗马尼亚,乌克兰和以色列,其中包含材料 C ,因为这些是仅显示最近一周(2016年9月11日)的记录。
以色列只出现一次,因此日期是它的第一次出现 罗马尼亚出现在11日和28日。因为它没有出现在4号,所以11号是它的第一次亮相 乌克兰出现在11日和4日,所以它的第一次亮相是第4次。
SELECT T1.dDate
, T1.Country
, T1.Material
, MIN(T2.dDate) AS First_Appearance
FROM Table1 T1 INNER JOIN Table1 T2 ON
T1.Country = T2.Country AND
T1.Material = T2.Material AND
(T2.dDate + 7 = T1.dDate or T2.dDate = T1.dDate)
WHERE T1.dDate = (SELECT MAX(dDate) FROM Table1)
GROUP BY T1.Country, T1.Material, T1.dDate
ORDER BY T1.Country, T1.Material
如果您要查看前一周(将WHERE子句更改为WHERE T1.dDate = #09/04/2016#
),您将获得:
迪拜B 首次亮相第28名 罗马尼亚B 首次亮相第4名 西班牙A ,第一次出现在第28位 Ukraine C 首次亮相第4名。