我正在创建一个报告,计算一周内记录更新的次数。
听起来很简单,对吧?让我对这一挑战投入一些复杂性。
我面临的挑战是我正在使用的日期范围取决于另一个字段,如果更新,它将使日期范围字段完全抛出报告。我将尝试通过以下示例尽可能简化:
所以我有一张桌子
book.book_keeping_2014
在此表中有以下列:
record_number - Automatically generated by a SEQUENCE command
amount
record_name
record_updated
数据库中的记录已经存在,理想情况下只需更新一次。
记录名称具有特定格式,其中日期早于其余文件信息。示例文件名为:
20140106-blah-blah-blah-blah.txt
所以这就是我为UpdateCommand定义的内容:
UPDATE book.book_keeping_2014 SET [amount] = @amount,
record_name = @record_name, record_updated = LEFT(record_name,8)
WHERE [record_number] = @record_number
所以这个条目在record_name字段中 -
20140106-blah-blah-blah-blah(etc).txt
将输入record_updated字段:
20140106
目前代码运行正常。但是,可能存在需要更新record_name列中给定单元格的奇怪时间。根据上面的UpdateCommand,如果record_name字段得到更新,那么record_updated字段也将更新。
我面临的挑战是,如果我在1月的第一周创建每周报告,然后我在1月的第4周更新了记录,这将会丢掉一份报告。月报也是如此。
我的问题是如何防止/重新编写我的Update语句,以便当LEFT命令在第一次不会被覆盖时提取正确的信息?
我对日期转换方案也有类似的挑战,但我可能只是把它放在一个不同的问题上。
答案 0 :(得分:1)
如果您可以更改表的结构,则可以为HasUpdated添加标志。然后在您的查询中,仅更新HasUpdated = 0的行。