【发布时间】:2012-12-29 14:28:42
【问题描述】:
我正在将我的 Delphi 应用程序从 MySQL 移动到 SQL Server 2012。在 MySQL 中我有这个查询:
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 中,此查询显示
消息 8120,第 16 级,状态 1,第 1 行
列“StockData.ID”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
如果我将查询更改为:
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 子句中。
有什么想法吗?
这是表格的设计视图:
【问题讨论】:
-
(StyleNr,Customer,Color)组合是唯一的吗?如果是,只需删除GROUP BY行。如果不是,那么 MySQL 查询给出了错误的、不确定的结果。 -
这主要是为了防止出现重复值,因为在最后一个数据库中存在重复值。
标签: mysql sql sql-server