【问题标题】:Creating a computed column in a View. Is it possible?在视图中创建计算列。可能吗?
【发布时间】:2011-07-13 15:34:18
【问题描述】:

我的 SQL 视图返回以下内容

ID Name
AA Gina
AB George
AC John

我想添加一个计算列 UpCounter 所以我的视图返回类似

ID Name    UpCounter
AA Gina    1
AB George  2
AC John    3

有可能吗?

更新: UpCounter 实际上是行索引

【问题讨论】:

  • 您使用的是哪个 sql server .... View 基本上是一个在运行时评估的选择(不考虑索引视图)。所以像 select 一样,你可以做任何计算或调用任何 ufd for column in view ...
  • 简短的回答是“是”,但方法取决于您拥有的 SQL 版本。另外,填充 UpCounter 列的标准是什么?
  • @Jamiec 实际上是的。第三条记录的名称是 John

标签: sql sql-server sql-server-2005 tsql calculated-columns


【解决方案1】:

请参阅OVER Clause

SELECT ID, Name, ROW_NUMBER() OVER(ORDER BY ID ASC) AS UpCounter
FROM xyz

这是一个用例:

WITH x AS (
    SELECT 'AA' as ID, 'Gina' as Name
    UNION
    SELECT 'AB' as ID, 'George' as Name
    UNION
    SELECT 'AC' as ID, 'John' as Name
)
SELECT ID, Name, ROW_NUMBER() OVER(ORDER BY ID ASC) AS UpCounter
FROM x

【讨论】:

    【解决方案2】:

    您可以使用 ROW_NUMBER() 函数:

    SELECT ROW_NUMBER() OVER (ORDER BY [ID]) AS MyIndex, 
           [ID], 
           [Name] 
    FROM   MyTable
    

    另外,请注意计算列是不同的。计算列是表上的“虚拟列”,仅存储要计算的论坛,然后选择该字段。它不占用行空间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 2011-03-29
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多