T-SQL多表关联查询求助:需按店铺、商品统计销售数据
调整T-SQL查询以返回店铺名称和已售出商品信息
嘿,我来帮你搞定这条查询!先明确下你的需求:要返回(a)店铺名称和(b)已售出的商品信息,对吧?咱们先看看你现有查询里的问题,再给出调整后的方案。
问题分析
你原来的查询里有两个明显的问题:
GROUP BY子句里用的是Store、Item,但SELECT里对应的是S.StoreName、I.ItemName,这会导致语法错误——GROUP BY必须和SELECT中的非聚合列完全对应。- 如果只是要列出每笔交易的店铺和商品信息,
GROUP BY其实是多余的,它会把相同组合的行合并,但你没有用任何聚合函数,这完全没必要。
方案1:列出每笔交易的店铺与商品信息
如果你的需求是展示每一笔交易对应的店铺名称和售出商品(包含每笔交易的金额),直接去掉GROUP BY即可:
SELECT S.StoreName, I.ItemName, T.CreditAmount, T.DebitAmount FROM TransactionsTable T LEFT JOIN ItemsTable I ON I.Id = T.ItemID LEFT JOIN StoresTable S ON S.Id = T.StoreId
这个查询会返回所有交易记录,每一行对应一笔交易的店铺、商品和金额信息。
方案2:按店铺和商品汇总交易金额
如果你的“已售出商品信息”需要汇总(比如每个店铺每个商品的总信用额、总借记额),那就要用聚合函数配合GROUP BY:
SELECT S.StoreName, I.ItemName, SUM(T.CreditAmount) AS TotalCreditAmount, SUM(T.DebitAmount) AS TotalDebitAmount FROM TransactionsTable T LEFT JOIN ItemsTable I ON I.Id = T.ItemID LEFT JOIN StoresTable S ON S.Id = T.StoreId GROUP BY S.StoreName, I.ItemName
这里用SUM()来计算每个店铺每个商品的总交易金额,GROUP BY也对应到StoreName和ItemName,确保语法正确且结果符合汇总需求。
如果你的“已售出商品信息”还有其他细节(比如销量统计),可以再补充需求,我再帮你调整!
内容的提问来源于stack exchange,提问作者OggyPops
相关产品推荐
相关产品推荐

