【发布时间】:2016-12-05 04:31:49
【问题描述】:
目标:我有一堆日期,我想按类别更新最小日期的记录:
JVID APDATE TAG into > JVID APDATE TAG
1 201501 Use 1 201501 Don't Use
1 201502 Use 1 201502 Use
1 201502 Use 1 201502 Use
1 201503 Use 1 201503 Use
2 201502 Use 2 201502 Don't Use
2 201503 Use 2 201503 Use
我使用的方法如下: 我创建了一个字典,其中 Key = ID,Value = MinDateByID 然后我循环遍历键(对于字典中的每个键)并为每个 ID 运行更新查询,检查 IIF 语句根据与最小日期匹配的日期更新使用/不使用。
这行得通,但是使用 +80k ID 覆盖 +1M 记录需要很长时间。
我正在考虑运行相同的东西,但转储 SQL 并仅遍历记录,但我无法想象这会更快?
我正在寻找 SQL 或 VBA 建议。
提前谢谢你!
编辑 - 从评论中添加 SQL
UPDATE [FY16 Q12 BE] SET [FY16 Q12 BE].[Record Use] = IIF([FY16 Q12 BE].[Date] = "201601", "Use", "Don't Use") WHERE ([FY16 Q12 BE].[ID]="20165645699");
我浏览了每个字典键/值对 ex (20165645699, 201601) 以各种形式创建和运行此脚本 80k+ 次
【问题讨论】:
-
这是 SQL 擅长的事情,但我不太明白您要做什么。您想在每个 ID 的最早日期有一个“使用”,还是什么?
-
@grahmaj42 是的,我想在最早的日期“使用”,有时最早的日期也会重复多次,所有这些项目都应该标记为使用。我认为这是一个非常清晰的 SQL 应用程序,但我的脚本非常慢——几个小时仍未完成。
-
您使用的是什么“永远需要”的 SQL?
-
@dbmitch UPDATE [FY16 Q12 BE] SET [FY16 Q12 BE].[记录使用] = IIF([FY16 Q12 BE].[会计期间] = "201601", "Include", " Dup Perm JV") WHERE ([FY16 Q12 BE].[ID]="20165645699");我浏览了每个字典键/值对,基本上以各种形式创建和运行此脚本 80k 次
-
如果您要添加新的 SQL 和数据 - 请编辑您的问题并将其添加到那里。在 cmets 区域不可读
标签: sql vba ms-access sql-update