SQL:正确例如1,2,4,5,7到1,2,3,4,5(排队顺序)

时间:2016-05-04 09:51:50

标签: c# sql asp.net ms-access

让我们说我们有一个支持软件,客户可以在它满员时排队等候。对于队列中的每个客户,队列索引将随着++ n而增加。 索引0表示您不再处于队列中。

但是,在客户选择离开队列的情况下,他之后的另一个客户的队列索引不会减少。让我们说他的指数是3,并且总共有5个客户在线。

表示:1,2,3,4,5导致 - > 1,2,4,5那真是太可怕了。相反,我希望它能够正确地纠正队列的其余部分并减少舱口上方的所有人,直到不再有舱口。

如何使用SQL语法更正队列顺序,检查是否有任何填充,如果有,请更正它?

2 个答案:

答案 0 :(得分:2)

请勿触摸桌子。

使用查询,只需按增加的自动编号或调用时间(您可能也有)对队列进行排序,然后添加行计数器以显示队列。

答案 1 :(得分:1)

对于表名称队列,使用字段Customer和Position:

SELECT Queue.Customer, Queue.Position, (select count(customer) from Queue T where T.position<=Queue.Position) AS [Index]
FROM Queue
GROUP BY Queue.Customer, Queue.Position;

索引是新的队列位置,没有间隙。

显然,在向队列添加新人时,位置字段必须加1 - 您不能将Index + 1用作新客户的位置。