我有一组记录排序(Order BY)ProductDesc,RecDate,然后是ProductBrand 它给了我以下结果。
- >> SQL是
SELECT RecDate, ProductDesc,ProductBrand
FROM MyTable i
Order BY i.ProductDesc, i.RecDate,i. ProductBrand
-
RecDate --- ProductDesc --- Brand
--------------------------------------------------------------
2017-07-15 --- TOMATO ROMA --- (S & S)
2017-07-16 --- TOMATO ROMA --- (A & B)
2017-07-17 --- TOMATO ROMA --- (C & D)
2017-07-18 --- TOMATO ROMA --- (AAA)
2017-07-25 --- TOMATO ROMA --- (C & D)
2017-07-26 --- TOMATO ROMA --- (C & D)
但我的要求是显示按照ASC中的ProductDesc,RecDate排序的这些记录,然后显示具有相同品牌的相同产品(例如' TOMATE ROMA(C& D)')但是有不同的接收日期, 它需要将这些组合在一起。排序后的数据应如下所示
RecDate --- ProductDesc --- Brand
----------------------------------------------------------------
2017-07-15 --- TOMATE ROMA --- (S & S)
2017-07-16 --- TOMATE ROMA --- (A & B)
2017-07-17 --- TOMATE ROMA --- (C & D)
2017-07-25 --- TOMATE ROMA --- (C & D)
2017-07-26 --- TOMATE ROMA --- (C & D)
2017-07-18 --- TOMATE ROMA --- (AAA)
有任何建议我如何能够实现这个目标吗? 注意:我正在使用SQL SERVER,并运行sql填充dataTable,并使用此数据表填充datagridview。
答案 0 :(得分:5)
您希望按品牌的最短日期排序。您可以使用order by
子句中的窗口函数来执行此操作:
select RecDate, ProductDesc, ProductBrand
from MyTable i
order by i.ProductDesc,
min(i.RecDate) over (partition by i.ProductBrand),
i.ProductBrand,
i.RecDate;