Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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 Server中使用别名按多个列分组?_Sql_Sql Server - Fatal编程技术网

如何在SQL Server中使用别名按多个列分组?

如何在SQL Server中使用别名按多个列分组?,sql,sql-server,Sql,Sql Server,从一些旧代码中获取了一个查询,我正在努力使它正常工作。每次提交查询时,都会出现以下错误: 错误代码207,SQL状态S0001:列名“Grade”无效 代码: 选择 计数(*)为计件计数 ,shifttimes.shiftid作为shiftid ,specienames.NameText作为物种 ,gradenames.NameText作为年级 干蕨属 ,CreatedLocal 从…起 表、移位时间、物种名称、等级名称 哪里 sheets.ShiftIndex=shifttimes.Shift

从一些旧代码中获取了一个查询,我正在努力使它正常工作。每次提交查询时,都会出现以下错误:

错误代码207,SQL状态S0001:列名“Grade”无效

代码:

选择
计数(*)为计件计数
,shifttimes.shiftid作为shiftid
,specienames.NameText作为物种
,gradenames.NameText作为年级
干蕨属
,CreatedLocal
从…起
表、移位时间、物种名称、等级名称
哪里
sheets.ShiftIndex=shifttimes.ShiftIndex
和sheets.SpecieNameIndex=specienames.NameIndex
和sheets.gradenameindex=gradenames.NameIndex
和CreatedLocal>=“2015-04-01”
和CreatedLocal<'2015-06-01'
分组
希夫蒂德,等级,干燥,品种

对于错误,我认为您应该更改

GROUP BY ShiftId
    ,Grade
    ,DryerNum
    ,Specie

注意:

在您的选择中,您有
,创建本地
,但不在您的
分组依据中,您必须将其从选择中删除或包含在
分组依据中

建议:

尝试使用别名和隐式联接(from子句中有两个表)是一种不推荐使用的语法,建议切换到现代的显式语法:

SELECT COUNT(*) AS PieceCount
    ,ST.shiftid AS ShiftId
    ,SN.NameText AS Specie
    ,GN.NameText AS Grade
    ,DryerNum    
FROM 
   sheets S
inner join shifttimes ST
   ON S.ShiftIndex = ST.ShiftIndex
inner join Specienames SN
   ON S.SpecieNameIndex = SN.NameIndex
inner join GradeNames GN
   ON S.gradenameindex = GN.NameIndex
WHERE 
    CreatedLocal >= '2015-04-01'
AND CreatedLocal < '2015-06-01'
GROUP BY 
     ST.shiftid
    ,GN.NameText
    ,DryerNum
    ,SN.NameText
选择计数(*)作为计件计数
,ST.shiftid AS shiftid
,SN.NameText作为种类
,GN.NameText作为年级
干蕨属
从…起
床单
内连接移位时间
在S.ShiftIndex=ST.ShiftIndex上
内连接物种SN
关于S.SpecieNameIndex=SN.NameIndex
内部连接等级名称
在S.gradenameindex=GN.NameIndex上
哪里
CreatedLocal>=“2015-04-01”
和CreatedLocal<'2015-06-01'
分组
圣希夫蒂德
,GN.NameText
干蕨属
,SN.NameText

对于错误,我认为您应该更改

GROUP BY ShiftId
    ,Grade
    ,DryerNum
    ,Specie

注意:

在您的选择中,您有
,创建本地
,但不在您的
分组依据中,您必须将其从选择中删除或包含在
分组依据中

建议:

尝试使用别名和隐式联接(from子句中有两个表)是一种不推荐使用的语法,建议切换到现代的显式语法:

SELECT COUNT(*) AS PieceCount
    ,ST.shiftid AS ShiftId
    ,SN.NameText AS Specie
    ,GN.NameText AS Grade
    ,DryerNum    
FROM 
   sheets S
inner join shifttimes ST
   ON S.ShiftIndex = ST.ShiftIndex
inner join Specienames SN
   ON S.SpecieNameIndex = SN.NameIndex
inner join GradeNames GN
   ON S.gradenameindex = GN.NameIndex
WHERE 
    CreatedLocal >= '2015-04-01'
AND CreatedLocal < '2015-06-01'
GROUP BY 
     ST.shiftid
    ,GN.NameText
    ,DryerNum
    ,SN.NameText
选择计数(*)作为计件计数
,ST.shiftid AS shiftid
,SN.NameText作为种类
,GN.NameText作为年级
干蕨属
从…起
床单
内连接移位时间
在S.ShiftIndex=ST.ShiftIndex上
内连接物种SN
关于S.SpecieNameIndex=SN.NameIndex
内部连接等级名称
在S.gradenameindex=GN.NameIndex上
哪里
CreatedLocal>=“2015-04-01”
和CreatedLocal<'2015-06-01'
分组
圣希夫蒂德
,GN.NameText
干蕨属
,SN.NameText

请检查这里与Java无关。标签已编辑。-在ANSI-92 SQL标准(20多年前)中,旧样式的逗号分隔表列表样式被正确的ANSI
JOIN
语法所取代,它的使用不受欢迎。请检查这里与Java无关。标签已编辑。-在ANSI-92 SQL标准(20多年前)中,旧样式的逗号分隔表列表样式被正确的ANSI
JOIN
语法所取代,因此不鼓励使用它。
groupby
子句不能使用
SELECT
列表中定义的列别名。从逻辑/流程流的角度来看,分组发生在选择之前。同样是,聚合查询的选择列表必须只列出分组列和/或组的函数(尽管某些数据库允许其他列作为扩展)。是。
groupby
子句不能使用
SELECT
列表中定义的列别名。从逻辑/流程流的角度来看,分组发生在选择之前。同样,聚合查询的select列表必须只列出分组列和/或组的函数(尽管某些数据库允许其他列作为扩展)。