Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL创建列&联合所有错误_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

SQL创建列&联合所有错误

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

假设我所有的字段名都是正确的

我的查询是在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 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新手。谢谢