【发布时间】:2015-05-19 19:23:34
【问题描述】:
我正在使用 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表[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 中的每一行。
如果 [Type Code] 是“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
然后根据这个记录集,如果有一个带有'2'的[Adj Code],我想更新对应的TableData的[Final]列'Y'。同样,我想用“N”为 [Final] 列“N”更新匹配 TableData 的匹配记录,其中 [Adj Code] = 0。
如果 [Type Code] 不是“10”(在这种情况下是“40”),我想做同样的过程,除了添加 [Thru Date] 以及......看起来像这: 在 TempData 的 [Code 1]、[Code 2]、[Type Code] 和 [From Date] AND [Thru Date] 列匹配的 TableData 上选择。
应该是这样的:
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
我希望这不会太令人困惑...我很乐意提供更多信息,因为我需要尽快完成工作中的项目。谢谢。
【问题讨论】:
-
请出示您的 Sql。你必须为此编写存储过程。祝你好运
-
我还没有写任何sql。
-
我通过使用嵌套游标解决了这个问题。 stackoverflow.com/questions/469019/cursor-inside-cursor
-
请回答您的问题并标记为完成。
标签: sql sql-server-2012