Sql server 生成按虚拟/构造列中的值排序的行号

Sql server 生成按虚拟/构造列中的值排序的行号,sql-server,Sql Server,我试图在构造的列中生成按值排序的行号,但是我不断得到一个错误: 列名“Type”无效 SELECT ROW_NUMBER() OVER (ORDER BY [Type] ASC) As [RowID], [ID], case when ([CaseOne] = 1) then 1 else case when ([Label] IS NOT NULL) then 2 else 3 end end AS [Type] FROM [Table1] 使用2008 R2。您需要将您的案例陈述

我试图在构造的列中生成按值排序的行号,但是我不断得到一个错误:

列名“Type”无效

SELECT  ROW_NUMBER() OVER (ORDER BY [Type] ASC) As [RowID], [ID], 
   case when ([CaseOne] = 1) then 1 else case when ([Label] IS NOT NULL) then 2 else 3 end end AS [Type]
FROM [Table1]

使用2008 R2。

您需要将您的案例陈述放入订单中。不能在ORDER BY或HAVING子句中使用别名列:

SELECT
  ROW_NUMBER() OVER ( ORDER BY CASE WHEN ( [CaseOne] = 1 ) THEN 1
                                    ELSE CASE WHEN ( [Label] IS NOT NULL )
                                              THEN 2
                                              ELSE 3
                                         END
                               END ASC ) AS [RowID],
  [ID],
  CASE WHEN ( [CaseOne] = 1 ) THEN 1
       ELSE CASE WHEN ( [Label] IS NOT NULL ) THEN 2
                 ELSE 3
            END
  END AS [Type]
FROM
  [Table1]

多谢了,我在柱子上目不转睛地盯着自己