【发布时间】:2015-06-04 16:25:31
【问题描述】:
我有以下代码
SELECT
Customer,
booking,
[date],
Parent_Booking,
0 AS change_number
FROM bookings
假设我有一个网站,客户可以在该网站上预订房晚。对于在网站上进行的每个预订,都会创建一个预订号。
例子:
我的 DB2 表中的当前行:
Customer booking# date Parent_Booking
1 11111 1.01.15 NULL
现在是重要的部分。如果客户更改他的预订,与他的原始预订相关的预订号将被冻结,并会创建一个新的预订号。假设客户更改了 3 次预订。我表中的行如下所示:
Customer booking# date Parent_Booking
1 11111 1.01.15 NULL
1 22222 5.01.15 11111 -----> First Change
1 33333 6.01.15 22222 -----> Second Change
1 44444 10.01.15 33333 -----> Third Change
现在如果我运行上面的代码,我只会得到前两行:
Customer booking# date Parent_Booking
1 11111 1.01.15 NULL
1 22222 5.01.15 11111 -----> First Change
我想获取所有行,这意味着我想使用递归并获取父母的所有父母,直到没有父母为止。如何修改我的主查询以实现此目的?
我认为这部分需要发生:
ON AL.[Parent Reservation No_]=DB2.[B_KEY]
我想继续加入,直到[父母预订号] = NULL
【问题讨论】:
-
@Evaldas:我知道如何使用CTE,但是在这个例子中如何使用i来帮助我呢?你能给我更多信息吗
-
您需要两个单独的查询才能获得结果。一个获取所有ID,另一个进行加入。现在想办法。
标签: sql sql-server recursion