我的表中有以下数据:
+-------------+---------------+--------+----------+------------+----------+---------+-------------------------+------------+-----------+--+
| ProductName | PricePerPiece | CafeID | Quantity | TotalPrice | MemberID | OrderID | OrderDate | OrderTotal | ProductID | |
+-------------+---------------+--------+----------+------------+----------+---------+-------------------------+------------+-----------+--+
| Coffee | 10 | 1 | 1 | 10 | 20 | 1008 | 2016-06-01 02:38:47.113 | 196 | 1 | |
| Mocha | 152 | 1 | 1 | 152 | 20 | 1008 | 2016-06-01 02:38:47.113 | 196 | 4 | |
| Pikachu | 34 | 1 | 1 | 34 | 20 | 1008 | 2016-06-01 02:38:47.113 | 196 | 5 | |
| Coffee | 10 | 1 | 1 | 10 | 20 | 1009 | 2016-06-01 02:39:49.750 | 35 | 1 | |
| Cappucino | 25 | 1 | 1 | 25 | 20 | 1009 | 2016-06-01 02:39:49.750 | 35 | 3 | |
+-------------+---------------+--------+----------+------------+----------+---------+-------------------------+------------+-----------+--+
我想要一个特定产品的单行,其Quantity
和TotalPrice
被添加到一起,给出以下预期输出:
+-------------+---------------+--------+----------+------------+----------+---------+-------------------------+------------+-----------+--+
| ProductName | PricePerPiece | CafeID | Quantity | TotalPrice | MemberID | OrderID | OrderDate | OrderTotal | ProductID | |
+-------------+---------------+--------+----------+------------+----------+---------+-------------------------+------------+-----------+--+
| Coffee | 10 | 1 | 2 | 20 | 20 | 1008 | 2016-06-01 02:38:47.113 | 196 | 1 | |
| Mocha | 152 | 1 | 1 | 152 | 20 | 1008 | 2016-06-01 02:38:47.113 | 196 | 4 | |
| Pikachu | 34 | 1 | 1 | 34 | 20 | 1008 | 2016-06-01 02:38:47.113 | 196 | 5 | |
| Cappucino | 25 | 1 | 1 | 25 | 20 | 1009 | 2016-06-01 02:39:49.750 | 35 | 3 | |
+-------------+---------------+--------+----------+------------+----------+---------+-------------------------+------------+-----------+--+
我尝试了以下查询:
SELECT [ProductName], [PricePerPiece], [CafeID],
SUM([Quantity]) AS [Quantity], SUM([TotalPrice]) AS [TotalPrice],
[MemberID],[OrderID],[OrderDate],[OrderTotal],[ProductID]
FROM [ProductOrders] GROUP BY [ProductID], [ProductName], [PricePerPiece], [CafeID], [MemberID], [OrderID], [OrderDate], [OrderTotal]
但它给出了相同的结果,只显示Coffee
行,但没有将Quantity
和TotalPrice
相加。请告诉我怎么做?
答案 0 :(得分:2)
OrderTotal
对每个Coffee
行都有不同的值。您可以选择不选择OrderTotal
,也可以选择SUM(OrderTotal)
。
您选择但未汇总(或以其他方式汇总)的任何不同值都不会组合在一起。
仔细观察:OrderDate
和OrderID
也是如此。根据您的预期输出,您需要选择MIN(OrderID), MIN(OrderDate), MAX(OrderTotal)
答案 1 :(得分:1)
...because they have no common ancestor. Does the constraint reference items in different view hierarchies? That's illegal.'
中有太多列。我建议:
GROUP BY
OrderID
OrderDate
此信息似乎不是您的目标所必需的:
OrderTotal
答案 2 :(得分:1)
每行中包含不同值的列,例如OrderID
,OrderDate
,查看您的预期结果集我可以假设您想要最早的记录,只需使用MIN
为他们的列功能。
此外,只有select中未包含在任何聚合函数中的列必须位于group by
子句中,您才能获得所需的结果。
SELECT [ProductName]
, [PricePerPiece]
, [CafeID]
, SUM([Quantity]) AS [Quantity]
, SUM([TotalPrice]) AS [TotalPrice]
, [MemberID]
, MIN([OrderID]) AS [OrderID]
, MIN([OrderDate]) AS [OrderDate]
, [OrderTotal]
, [ProductID]
FROM [ProductOrders]
GROUP BY [ProductName]
, [PricePerPiece]
, [CafeID]
, [MemberID]
, [OrderTotal]
, [ProductID]