GROUP BY含Image字段报错求助:合并Inventory与Product表数据
解决SQL分组时包含Image字段的报错问题
问题原因
你的SQL语句报错是因为Image字段属于text、ntext或image数据类型,这类字段无法直接参与分组(GROUP BY)中的比较或排序操作,仅支持IS NULL或LIKE运算符。
修复后的SQL语句
先对Inventory表按barcode汇总库存数量,再关联Product表获取产品信息,这样就无需将Image字段加入分组条件:
SELECT T1.Barcode, SUM(T1.Quantity) AS Quantity, T2.Description, T2.Image FROM Inventory T1 LEFT OUTER JOIN Product T2 ON T1.Barcode = T2.Barcode WHERE T1.Quantity > 0 GROUP BY T1.Barcode
注:因为每个Barcode在Product表中对应唯一的Description和Image,关联后可直接获取对应字段值。
如果数据库要求关联后的非聚合字段必须加入GROUP BY(如部分严格模式),可以用子查询先汇总再关联:
SELECT agg.Barcode, agg.TotalQuantity AS Quantity, p.Description, p.Image FROM ( SELECT Barcode, SUM(Quantity) AS TotalQuantity FROM Inventory WHERE Quantity > 0 GROUP BY Barcode ) agg LEFT JOIN Product p ON agg.Barcode = p.Barcode
执行结果
执行上述语句后,会得到你期望的结果:
| barcode | quantity | description | image |
|---|---|---|---|
| 453011 | 22 | Celphone | image |
| 453000 | 5 | Battery | image |
内容的提问来源于stack exchange,提问作者chris_techno25
相关产品推荐
相关产品推荐

