我有一个包含这三个属性的表,比如说:
ItemID varchar(20),
RetailerID int,
ItemMfd_Date DATE
现在我想要所有这些记录,如果给定的 Item
+ ItemMfd_Date
有多个零售商,我们需要选择最小{{1}的行}}。
假设我们有两个属性附加,我们想要一个属性作为结果,但条件是那些记录必须有attr2 = 1
答案 0 :(得分:0)
使用min
聚合函数和其他两列的分组:
select ItemID, min(RetailerID) as min_RetailerID, ItemMfd_Date
from table
group by ItemID, ItemMfd_Date;
答案 1 :(得分:0)
DISTINCT ON
最简单的方法是检索每个RetailerID
最少(ItemID, ItemMfd_Date)
行的一个:
SELECT DISTINCT ON (ItemID, ItemMfd_Date) *
FROM tbl
ORDER BY ItemID, ItemMfd_Date, RetailerID;
详细说明:
对于许多重复项的发行版,其他查询样式可能会更快: