迁移到SQL Server 2012时,MySQL GROUP BY不起作用 [英] MySQL GROUP BY doesn't work when migrated to SQL Server 2012

查看:129
本文介绍了迁移到SQL Server 2012时,MySQL GROUP BY不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将我的Delphi应用程序从MySQL迁移到SQL Server2012.在MySQL中,我有以下查询:

I'm moving my Delphi application from MySQL to SQL server 2012. In MySQL I had this query:

SELECT *,(XS+S+M+L+XL+XXL+[1Size]+Custom) as Total FROM StockData  
GROUP BY StyleNr,Customer,Color  
ORDER BY StyleNr,Customer,Color

效果很好.但是在Microsoft SQL Server 2012中,该查询显示为

And it worked perfectly. But in Microsoft SQL Server 2012 this query says

消息8120,第16级,状态1,第1行
选择列表中的"StockData.ID"列无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中.

Msg 8120, Level 16, State 1, Line 1
Column 'StockData.ID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

如果我将查询更改为:

SELECT *,([XS]+[S]+[M]+[L]+[XL]+[XXL]+[1Size]+[Custom])  total
 FROM [dbo].[stockdata]
 GROUP BY ID,StyleNr,Customer,Color
 ORDER BY StyleNr,Customer,Color

然后我收到此错误:

消息8120,第16级,状态1,第1行
选择列表中的'dbo.stockdata.XS'列无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中.

Msg 8120, Level 16, State 1, Line 1
Column 'dbo.stockdata.XS' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

有什么想法吗?

这是表格的设计视图:

推荐答案

SQL Server正常工作.您必须将SELECT列表中的所有项目都包含在GROUP BY或聚合函数中:

SQL Server is working as expected. You must include all items in your SELECT list in either a GROUP BY or in an aggregate function:

SELECT *,(XS+S+M+L+XL+XXL+[1Size]+Custom) as Total 
FROM StockData  
-- GROUP BY ID,StyleNr,Customer,Color, XS,S,M,L,XL,XXL,[1Size],Custom
ORDER BY StyleNr,Customer,Color

或者您可以使用:

SELECT StyleNr,Customer,Color, SUM(XS+S+M+L+XL+XXL+[1Size]+Custom) as Total 
FROM StockData  
GROUP BY StyleNr,Customer,Color
ORDER BY StyleNr,Customer,Color;

这篇关于迁移到SQL Server 2012时,MySQL GROUP BY不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆