【发布时间】:2016-09-16 03:09:23
【问题描述】:
我已将我需要的数据过滤到一个表格中,但我意识到它位于 3 个不同的行上。
我需要帮助在 MS SQL 中编码逻辑来完成以下工作。基本上,我需要的数据位于 3 个不同的行上。 “W”行中的所有数据都需要,而接下来的 2 行中只需要 DESC 列中的数据,它们也将具有相同的日期和时间。
- 按顺序读取表 A
- 如果列 AC 包含“W”保存数据。
- 读取下一行,将数据保存在 DESC 列中。
- 读取下一行,将数据保存在 DESC 中
- 将数据写入表 B。
- 阅读直到下一列 AC 包含“W,重复 2-5”
- 结束
表A
DATE TIME ACCT ATM AC AMT LOCATION
7/11/16 1040 5555 C 0 DUNKIN #3
7/11/16 1105 5555 #1 W -20
7/11/16 1105 5555 C 0 ATM
7/11/16 1105 5555 C 0 DUNKIN #3
7/12/16 2141 5555 C 0 BP#9
7/19/16 1025 5555 #2 W -40
7/19/16 1025 5555 C 0 ATM
7/19/16 1025 5555 C 0 SBUCKS #1
7/21/16 2102 5555 C 0 BP#5
表B
DATE TIME ACCT ATM AC AMT TRAN LOCATION
7/11/16 1105 5555 #1 W -20 ATM DUNKIN #3
7/19/16 1025 5555 #2 W -40 ATM STARBUCKS #1
【问题讨论】:
-
首先也是最重要的......您需要逐行逻辑并使用基于集合的逻辑。将 B 视为您的选择语句而不是写入。您需要的是表 A 上的自联接。
-
是的,这确实有道理。我会试试的!谢谢
-
对“接下来的两行”使用窗口函数
over ... order by(date)。
标签: sql-server sequential