如何在sql server中创建订单列
我想要表格中每一行的订单信息。下面是我的桌子。ID列是标识及其主键。订单列是根据id列计算的如何在sql server中创建订单列,sql,sql-server,calculated-columns,Sql,Sql Server,Calculated Columns,我想要表格中每一行的订单信息。下面是我的桌子。ID列是标识及其主键。订单列是根据id列计算的 ID -- Name -- Order 1 kiwi 1 2 banana 2 3 apple 3 一切都很好,我有一个订单栏。但是我不能改变行的顺序。 例如,我不能说从现在起猕猴桃的顺序变成了2
ID -- Name -- Order
1 kiwi 1
2 banana 2
3 apple 3
一切都很好,我有一个订单栏。但是我不能改变行的顺序。
例如,我不能说从现在起猕猴桃的顺序变成了2,香蕉的顺序变成了1
换句话说,如果我们更新一个计算列,那么我的问题就可以解决了
如果我不创建订单列作为计算列,那么对于每个新条目,我必须计算最大订单,这样我就可以为新条目的订单写(最大订单)+1。但我并没有计算每个条目的最大数量,因为它很昂贵
那我现在该怎么办
我已经搜索并找到了创建触发器函数等的解决方案。我也不想这样做 我可能不理解这个问题——我认为它不是很清楚 但是为什么要用计数器来对集合进行排序呢?难道你不能对每个顺序使用一个时间戳,并用它来指示哪个顺序是最近的吗
CREATE TABLE dbo.Test (
ID INT IDENTITY(1,1),
Name varchar(50),
OrderTime Datetime
)
INSERT INTO dbo.TEST (Name,OrderTime)
VALUES ('kiwi',Getdate())
SELECT *
FROM dbo.TEST
ORDER BY OrderTime
如果您需要一个基于订单时间的整数,您可以使用rownumber函数返回一个
SELECT *,
ROW_NUMBER() OVER (ORDER BY OrderTime Desc) as OrderInt
FROM dbo.TEST
不清楚的是:“如果我们要更新一个计算列,那么我可以创建一个从ID列计算的订单列,我的问题就可以解决了。”这意味着什么?为什么您不能更新该
订单
-列?`is column'ID'标识??您可以根据您的姓名列获得下一个订单(最大订单)+1,或者从整个订单列中获得最大订单?@TimSchmelter订单列是计算列。所以我不能改变它。我已经编辑了我的question@KrishKvR是的,身份就是身份。这就是为什么订单不能是标识,如果我们可以在sql server中创建两个标识列,那么我的问题就可以解决了