我们有一个数据库,其中包含有关项目预订时间的信息。我们有一个项目的实时记录,它包含正确的时间信息(每周从SAP导入一次)。对于每个SQL查询
我们也有存档记录显示在某个时间点的时间信息,这些记录每周进行一次,基本上是快照。 用户以后可能会提出调整项目时间的请求。如果发生这种情况,实时记录将反映项目的正确时间,但快照不会。 我需要编写一个查询,并在此时使用正确的项目时间更新这些快照。
我们有一个SAP数据表,它包含项目的每个时间条目的记录,显示项目代码的用途,日期和时间。历史数据表包含项目的代码和拍摄快照的日期。 因此,我需要编写一个将通过历史数据表的SQL查询,并且对于每一行,通过查看SAP表并在获取快照日期之前获取所有时间代码,获取该项目代码所花费的时间。
我真的很难做到这一点在一个SQL查询,主要问题是我真的需要运行历史数据表中的每个记录查询。我不断地提出建议使用游标的页面,但我对它们不甚了解,并不断看到文章说它们不好。任何关于我可以使用哪种查询的建议都会很棒!
基本上我想要的伪做的是:
For Each Project Code in the hostorical data table, archived on a date, select all time entrys on or before that date.
示例表
Historical Project Data SAP Data
----------------------- ----------------
Project Code | run date Project Code | Time | Date
1234 | 01/09/2009 1234 | 2 | 29/08/2009
9876 | 01/09/2009 1234 | 5 | 29/08/2009
1234 | 07/09/2009 9876 | 10 | 02/09/2009
9876 | 07/09/2009 1234 | 2 | 03/09/2009
所以我想用一个查询,显示
Project Code | run date | time
1234 | 01/09/2009 | 7
9876 | 01/09/2009 | 0
1234 | 07/09/2009 | 9
9876 | 07/09/2009 | 10
落得
因此,例如,查询中的第一条记录显示所有小时b在2009年9月1日或之前开始项目1234。
忽略别人说游标是坏的。他们只是不明白。如果他们试图用钻头将钉子钉入墙上,那不是钻头的缺点。 – 2009-09-22 09:19:27
虽然我不会说'绝对不需要使用游标',但要养成基于集合的逻辑和思维的习惯是非常重要的。当一个非常简单的基于集合的查询能够以简单,简单和快速的方式解决问题时,总是直接进入循环,游标和程序思维是很多错误。 – 2009-09-22 12:03:26
这恰恰与Access有关? – 2009-09-23 01:51:59