SQL Server Mgt Studio 2012就是我正在使用的。总结一下,我希望一次执行几个命令。我是一名.NET开发人员,所以我想从if和elses。
我在[TableData]中有原始数据,如下所示:
ID | Code 1 | Code 2 | Type Code | From Date | Thru Date | Adj Code | Final
1 | 2001 | 9982 | 10 | 2015-01-13| 2015-01-13| 0 | Y
2 | 2001 | 9982 | 10 | 2015-01-13| 2015-01-13| 1 | N
3 | 2001 | 9982 | 10 | 2015-01-13| 2015-01-24| 2 | Y
4 | 2001 | 2653 | 40 | 2014-12-29| 2014-12-29| 0 | Y
5 | 2001 | 2653 | 40 | 2014-12-29| 2014-12-29| 1 | N
我将TableData中的数据插入名为TempData的临时表中,其中AdjCode = 1。
tmp table [TempData]数据:
ID | Code 1 | Code 2 | Type Code | From Date | Thru Date | Adj Code
1 | 2001 | 9982 | 10 | 2015-01-13| 2015-01-13| 1
2 | 2001 | 2653 | 40 | 2014-12-29| 2013-12-29| 1
我想通过[类型代码]检查TempData中的每一行。
如果[类型代码]是' 10'然后我想在TableData上做一个新的选择,其中TempData的[Code 1],[Code 2],[Type Code]和[From Date]列匹配。
这应该是这样的:
ID | Code 1 | Code 2 | Type Code | From Date | Thru Date | Adj Code | Final
1 | 2001 | 9982 | 10 | 2015-01-13| 2015-01-13| 0 | Y
2 | 2001 | 9982 | 10 | 2015-01-13| 2015-01-24| 2 | Y
然后根据此记录集,如果[Adj Code]有' 2'我想更新相应的TableData' [Final]列' Y'。同样,我也不得不更新匹配的TableData匹配记录与“N' N'对于[最终]专栏' N'其中[Adj Code] = 0。
如果[类型代码]不是' 10' (另一个用' 40'在这种情况下),我想做同样的过程,除了添加[Thru Date]以外......看起来像这样: 在TableData上选择TempData的[Code 1],[Code 2],[Type Code]和[From Date] AND [Thru Date]列匹配。
这应该是这样的:
ID | Code 1 | Code 2 | Type Code | From Date | Thru Date | Adj Code | Final
1 | 2001 | 2653 | 40 | 2014-12-29| 2014-12-29| 0 | Y
2 | 2001 | 2653 | 40 | 2014-12-29| 2014-12-29| 1 | N
我希望这不会太令人困惑......我很乐意提供更多信息,因为我需要尽快完成这项工作。感谢。
答案 0 :(得分:0)
我在本文后面使用了嵌套游标:stackoverflow.com/questions/469019/cursor-inside-cursor
虽然它是一个临时解决方案并且有效但是游标的运行时速度非常慢。完成我的查询需要一个多小时(达到超过90k的记录)。