我有一个像下面这样的table1有超过400k的记录。我只是展示一个例子,它看起来如何。我想写一些查询来迭代每一行并找到它的相应日期;如果帐户ID的所有日期都存在,那么我必须更新另一个table2“是”。并且,如果任何一个日期为空(对于任何帐户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
2,如果几天后,帐户ID日期从Null更改为实际日期(例如07-07-2015),则表2“帐户ID 2”值应从“否”更改为“是”。所以几天后Table2看起来应该是这样的
Account ID | Flag
-----------|------
1 | Yes
2 | Yes
希望我已经正确解释了。我正在考虑使用游标,但是,我不知道如何使用它并且游标真的能解决这个问题吗?有没有其他方法可以实现这一目标?但是,在网上检查,无法获得合适的解决方案,请帮忙吗?
答案 0 :(得分:0)
你需要改变你的心态,不要看每一行。这是一个非常简单的基于集的解决方案。您还应该使用比DATE和Flag更好的名称,但无论如何,这将返回您所需的输出。
select AccountID
, case MIN(case when [Date] is null then '' else [DATE] end) when '' then 'No' else 'Yes' end as Flag
from Table1
group by AccountID