SQL创建列&联合所有错误
假设我所有的字段名都是正确的 我的查询是在Descont的基础上创建排名1,2,3 我创建了一个新列,并将其命名为GroupType 我的问题:当我使用新创建的列GroupType并在rank=rownumber over partition函数中引用它时,它会给出以下错误:SQL创建列&联合所有错误,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,假设我所有的字段名都是正确的 我的查询是在Descont的基础上创建排名1,2,3 我创建了一个新列,并将其命名为GroupType 我的问题:当我使用新创建的列GroupType并在rank=rownumber over partition函数中引用它时,它会给出以下错误: Msg 207, Level 16, State 1, Line 6 Invalid column name 'GroupType'. Msg 207, Level 16, State 1, Line 6 Invalid
Msg 207, Level 16, State 1, Line 6 Invalid column name 'GroupType'.
Msg 207, Level 16, State 1, Line 6 Invalid column name 'GroupType'.
下面是我的SQL查询:
select * from (
select
D1,[DesCount], Type, [Caused], [Comm], DATE, 'IC' As GroupType,
rank = row_number() over (partition by Date, [GroupType] order by date, [GroupType], [DesCount] desc)
from Z_DefectCount
) t
where rank <= 3
谢谢大家的帮助您不能在定义的同一级别使用列别名。但你不需要它,因为它是恒定的。您也不需要按照ORDERBY表达式重复按表达式分区 这应该满足您的要求:
select *
from (select D1, [DesCount], Type, [Caused], [Comm], DATE, 'IC' As GroupType,
rank = row_number() over (partition by Date order by [DesCount] desc)
from Z_DefectCount
) t
where rank <= 3
为什么需要按常量值进行分区和排序?我需要这两个[GroupType]在其中,因为我正在尝试进行一个并集。我试图将三个不同的字段组合在一起,并将其放在GroupType列中,然后按上面的顺序排列。我希望这能使你满意sense@Nguyenal07 . . . 然后在列组中重复该表达式,或者使用子查询来定义值。您能给我举个例子吗?我是SQL新手。谢谢