需要SQL查询才能组合在一起但整体排序

Jac*_*ard 0 sql sql-server group-by sql-order-by

我有一个包含Display_UPC,Brand,Item_Description和其他字段的表.有几个具有相同Display_UPC的项目(所有项目属于同一显示器),并且一些显示器具有多个品牌.

我正在尝试打印一个页面,其中显示所有显示内容(所有Display_UPC一起)和各种项目描述,但按品牌排序(因此它从页面顶部的"A"品牌开始,然后" B"品牌等......).

问题是,如果我尝试:

SELECT DISTINCT *
FROM tbl_All_Displays
ORDER BY Brand, Display_UPC
Run Code Online (Sandbox Code Playgroud)

一些显示器(包含多个品牌的显示器)缺少一些物品,因为它们是不同的品牌.我可以在ORDER BY中删除"Brand",它会一起返回完整的显示,但它们不按品牌(显然)排序.

我猜这里可能需要GROUP BY,但是我无法让它工作.如果我尝试类似的东西:

SELECT DISTINCT *
FROM tbl_All_Displays
GROUP BY Display_UPC
ORDER BY Brand, Display_UPC
Run Code Online (Sandbox Code Playgroud)

我收到错误:

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.
Run Code Online (Sandbox Code Playgroud)

但我需要在页面上显示Item_Description(和其他各种字段).它们在订购/分组中并不重要.

样本数据:

样本数据

预期结果样本:

样本预期结果

因此,基本上,查询在排序中使用的显示中的哪个品牌无关紧要.如果一个展示包含一个品牌,那么它可以属于该品牌"团体",如果这是有道理的.这可能吗?

注意:我删除并重新发布了一个普遍的问题,因为它编辑混乱.

编辑:这是sqlfiddle与示例表数据 - http://sqlfiddle.com/#!6/5069c

dno*_*eth 7

你想先按min(Brand)每个排序Display_UPC吗?

然后你需要先按"Group Min"排序(小提琴:

SELECT * 
FROM Table1 
ORDER BY 
   min(Brand) over (partition by Display_UPC),
   Display_UPC, 
   Brand
Run Code Online (Sandbox Code Playgroud)