我有一个包含Display_UPC,Brand,Item_Description和其他字段的表。有几个项目具有相同的Display_UPC(所有项目属于同一显示器),有些显示器有多个品牌。
我正在尝试打印一个页面,其中显示所有显示内容(所有Display_UPC在一起)和各种项目描述,但按品牌排序(因此它从页面顶部的“A”品牌开始,然后是“B”品牌等......)。
问题是,如果我尝试:
SELECT DISTINCT *
FROM tbl_All_Displays
ORDER BY Brand, Display_UPC
某些显示器(包含多个品牌的显示器)缺少某些商品,因为它们是不同的品牌。我可以在ORDER BY中删除“Brand”,它会一起返回完整的显示,但它们不按品牌排序(显然)。
我猜这里可能需要GROUP BY,但是我无法让它工作。如果我尝试这样的话:
SELECT DISTINCT *
FROM tbl_All_Displays
GROUP BY Display_UPC
ORDER BY Brand, Display_UPC
我收到错误:
Column 'tbl_All_Displays.Item_Description' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
但是我需要在页面上显示Item_Description(和其他各种字段)。它们在订购/分组中并不重要。
示例数据:
预期结果样本:
因此,基本上,查询在排序中使用的显示中的哪个品牌无关紧要。如果一个展示包含一个品牌,那么它可以属于该品牌“团体”,如果这是有道理的。这可能吗?
注意:我删除了并重新发布了一个普遍的问题,因为编辑很麻烦。
编辑:这是包含样本表数据的sqlfiddle - http://sqlfiddle.com/#!6/5069c
答案 0 :(得分:7)
答案 1 :(得分:0)