首页 > 解决方案 > sql 中有没有办法在 SELECT 语句中使用派生列来创建更多依赖列而不使用临时表?

问题描述

假设我有类似下面的内容。我认为不可能将新创建rowid的用作case whenvar 的条件,还是我错了?我可以创建一个临时表,但是否有另一种方法可以rowid用作新case when变量的条件,最好不使用临时表?

select 
  * from (select ROW_NUMBER()OVER(partition by id ORDER BY id) as rowid ,
 case when rowid > 1 then 'a' else 'b' end as newvar
from tableA) as A

标签: sqlsql-server

解决方案


您的查询应如下所示:

SELECT * FROM (
select CASE ROW_NUMBER()OVER(partition by id ORDER BY id) > 1 then 'a' else 'b' end as newvar
from tableA ) AS A

推荐阅读