我有一个包含特定范围项目的订单行的查询,然后我加入订单信息.
SELECT Orders.*, Orderp.*
FROM Orders
INNER JOIN
Orderp ON Orderp.StoreID = Orders.StoreID
AND
Orderp.[Date] = Orders.[Date]
AND
Orderp.OrderNumber = Orders.OrderNumber
WHERE
(Orders.ItemType = 2)
AND
(Orders.ItemNumberOnMenu IN (68, 69, 70, 71, 72))
AND
(Orders.[Date] > '2013/01/01')
Run Code Online (Sandbox Code Playgroud)
如果我GROUP BY Orderp.Telephone在上面的查询结束时添加,我会收到以下错误.
有没有想法如何分组客户的电话号码?
让我们尽力为您解决这个问题.
您正在使用GROUP BY通常伴随聚合函数的a.例如,如果我想要我的产品的平均销售额,我会使用.通过...分组
SELECT
AVG(Sales),
ProductID
FROM MostGenericTable
GROUP BY ProductID
Run Code Online (Sandbox Code Playgroud)
现在,这将显示每个人的平均销售额ProductID.
这就是您的查询不起作用的原因.您只需按一列进行分组,而不会对其他列进行聚合.
你的查询的第二个问题是它是懒惰的.输入您希望收到的列.不要使用SELECT *的原因很多,简单的谷歌搜索会给你无数的结果.在您的具体示例中,它会给您带来问题,因为您甚至不知道哪些列Group By.
由于您Group By以这种方式使用,因此您可能实际上正在查找ORDER BY哪个将对返回的行集进行排序.排序依据
SELECT
Orders.*,
Orderp.*
FROM Orders
INNER JOIN Orderp
ON Orderp.StoreID = Orders.StoreID
AND Orderp.[Date] = Orders.[Date]
AND Orderp.OrderNumber = Orders.OrderNumber
WHERE (Orders.ItemType = 2)
AND (Orders.ItemNumberOnMenu IN (68, 69, 70, 71, 72))
AND (Orders.[Date] > '2013/01/01')
ORDER BY Orderp.Telephone
Run Code Online (Sandbox Code Playgroud)
希望这个解释可以帮助你在将来不犯这些错误.
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |