【发布时间】:2015-11-18 02:08:03
【问题描述】:
我有一个像下面这样的 table1 有超过 40 万条记录。下面我只是展示例子,它的样子。我想编写一些查询来遍历每一行并找到其对应的日期;如果帐户 ID 的所有日期都存在,那么我必须更新另一个表 2“是”。而且,如果任何一个日期为空(对于任何帐户 ID),那么我必须将 table2 标志更新为“否”。
这是我的源表 1。
表1
Account ID | Date
----------- |------------
1 | 12-03-2015
1 | 11-03-2015
1 | 11-04-2015
1 | 01-03-2015
2 | 06-03-2015
2 | 11-03-2015
2 | Null
2 | 01-03-2015
这是 table2 结果的样子(查询执行后)
表2
Account ID | Flag
-----------|------
1 | Yes
2 | No
第二,如果几天后,帐户 ID 的日期从空更改为实际日期(例如 07-07-2015),则表 2“帐户 ID 2”值应从“否”更改为“是”。所以几天后 Table2 应该是这样的
Account ID | Flag
-----------|------
1 | Yes
2 | Yes
希望我已经正确解释了。我正在考虑使用光标,但是,我不确定如何使用它,光标真的能解决这个问题吗?有没有其他方法可以实现这一目标?上网查了一下,没找到合适的解决办法,求大神帮忙?
【问题讨论】:
-
表 2 是否可以只是表 1 的视图,带有简单的 case 语句?那你就不用更新了,会自动完成的
-
Table2 是不同的表。在这里尝试了一个答案:sqlfiddle.com/#!15/b8fbf/1。显示错误。
标签: sql-server sql-server-2008 tsql sql-server-2005