如何根据SQL select语句中的另一列添加计算列

如何根据SQL select语句中的另一列添加计算列,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我的SQL select语句中有名为NoteID和VersionID的字段。我需要在selectsql查询中包含一个计算列,该查询将在结果中创建一个名为“versionno”的列。“版本ID”越高,同一个NoteID的“版本号”越高 所以,在我的问题中 select NoteID, VersionID, VersionNo from Notes 版本号应该是动态计算的。试试看 select NoteID, VersionID, row_number() OVER (ORDER BY Versi

我的SQL select语句中有名为NoteID和VersionID的字段。我需要在selectsql查询中包含一个计算列,该查询将在结果中创建一个名为“versionno”的列。“版本ID”越高,同一个NoteID的“版本号”越高

所以,在我的问题中

select NoteID, VersionID, VersionNo from Notes
版本号应该是动态计算的。

试试看

select NoteID, VersionID, row_number() OVER (ORDER BY VersionID) AS VersionNo from Notes
输出

| NOTEID | VERSIONID | VERSIONNO | |--------|-----------|-----------| | 1 | 1 | 1 | | 2 | 2 | 2 | | 3 | 3 | 3 | | 4 | 5 | 4 | | 5 | 6 | 5 | |NOTEID | VERSIONID | VERSIONNO| |--------|-----------|-----------| | 1 | 1 | 1 | | 2 | 2 | 2 | | 3 | 3 | 3 | | 4 | 5 | 4 | | 5 | 6 | 5 |
NoteID
VersionID
的情况下,列是两种数字数据类型

SELECT NoteID, VersionID,  (NoteID + VersionID) As VersionNo 
FROM Notes
请参阅

以这种方式尝试

SELECT NoteID, VersionID,
       ROW_NUMBER() OVER (PARTITION BY NoteID ORDER BY VersionID) VersionNo
  FROM Notes
样本输出:

| NOTEID | VERSIONID | VERSIONNO | |--------|-----------|-----------| | 1 | 1 | 1 | | 1 | 3 | 2 | | 1 | 5 | 3 | | 2 | 2 | 1 | | 2 | 6 | 2 | |NOTEID | VERSIONID | VERSIONNO| |--------|-----------|-----------| | 1 | 1 | 1 | | 1 | 3 | 2 | | 1 | 5 | 3 | | 2 | 2 | 1 | | 2 | 6 | 2 |
这里是演示

您的
版本ID
是唯一的列吗?