SQL server 2008表中的计算列
如何创建下表所示的计算列SQL server 2008表中的计算列,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,如何创建下表所示的计算列 ID Group Name Age myComputedColumn ----------------------------------- 1 001 FF 28 00 2 001 GG 29 01 3 001 II 35 02 4 002 AA 15 00 5 001 UU 26 03 6 002 BB 17 01 7 002 CC 15 02 在myComputerdColumn
ID Group Name Age myComputedColumn
-----------------------------------
1 001 FF 28 00
2 001 GG 29 01
3 001 II 35 02
4 002 AA 15 00
5 001 UU 26 03
6 002 BB 17 01
7 002 CC 15 02
在myComputerdColumn
中,我希望有一个从'00'
到'24'
的值,在行到达'24'后,它将创建一个新的数字,该数字在'24'之前为'00'
如何创建这样的计算列?或者我需要在插入新记录时创建一个函数
谢谢。这将给出1、2、3等的值
Select ID,Group,Name,Age,
ROW_NUMBER() OVER (PARTITION BY [Group] ORDER BY ID) as computedcolumn
FROM tableName
如果你想从零开始,你可以改变,减去1
Select ID,Group,Name,Age,
ROW_NUMBER() OVER (PARTITION BY [Group] ORDER BY ID) - 1 as computedcolumn
FROM tableName
好的,那么您也需要填充的零,您可以使用RIGHT()来完成
这将给出1、2、3等的数值
Select ID,Group,Name,Age,
ROW_NUMBER() OVER (PARTITION BY [Group] ORDER BY ID) as computedcolumn
FROM tableName
如果你想从零开始,你可以改变,减去1
Select ID,Group,Name,Age,
ROW_NUMBER() OVER (PARTITION BY [Group] ORDER BY ID) - 1 as computedcolumn
FROM tableName
好的,那么您也需要填充的零,您可以使用RIGHT()来完成
如果希望数字从0变为24,则应使用:
select t.*,
(row_number() over (partition by [group] order by id) - 1) % 25
from table t;
%
运算符是模运算符。它返回整数除法后的余数
要将其作为字符,可以使用right()
/append0
技巧:
select t.*,
right('0' + cast((row_number() over (partition by [group] order by id) - 1) % 25 as varchar(3)), 2) as ComputedColumn
from table t;
如果希望数字从0变为24,则应使用:
select t.*,
(row_number() over (partition by [group] order by id) - 1) % 25
from table t;
%
运算符是模运算符。它返回整数除法后的余数
要将其作为字符,可以使用right()
/append0
技巧:
select t.*,
right('0' + cast((row_number() over (partition by [group] order by id) - 1) % 25 as varchar(3)), 2) as ComputedColumn
from table t;
什么是计算的基础列?您不能创建这样的计算列,但您当然可以选择它,如下面的示例答案所示。好的,谢谢,那么我如何将答案实现为“插入”语法?计算的计算列的基础是什么?您不能创建一个这样做的计算列,但您肯定可以按照下面的示例答案选择它。好的,谢谢,那么我如何将答案实现为“插入”语法?是sql server 2012语法吗?它与2005+兼容,ie 2005年以后的所有版本..200520082012在你最后的语法中,我尝试了那一个。。但是computedcolumn的结果是从0、1、2、3、ff开始。它应该是,00,01,02,03,ff。它是sql server 2012语法吗?它与2005+兼容,即2005年以后的所有版本..200520082012在您上次的语法中,我尝试了那个语法。。但是computedcolumn的结果是从0、1、2、3、ff开始。应该是,00,01,02,03,ff。我尝试了你的上一个语法,但是comp列,从0,1,2,ff开始。应该是00,01,02,ff。@Haminteu。使字符串逻辑工作需要一个
cast()
。我尝试了上一个语法,但是compcolumn从0、1、2、ff开始。应该是00,01,02,ff。@Haminteu。需要一个cast()
使字符串逻辑工作。