我有下表。
locationName itemnumber pickRouteOrder
loc1 item1 10
loc2 item2 20
loc2 item3 20
loc4 item5 30
no-loc item6 99
no-loc item7 99
如果locationName = noLoc,则需要显示所有记录。 如果locationame像loc2一样重复,则显示1条记录。 我想要结果如下。
locationName itemnumber pickRouteOrder
loc1 item1 10
loc2 item2 20
loc4 item5 30
no-loc item6 99
no-loc item7 99
我需要使用哪个查询才能获得所需的结果。
答案 0 :(得分:0)
这是一种方法:
select locationName, itemnumber, pickRouteOrder
from t
where locationName = 'NoLoc'
union all
select locationName, min(itemnumber), min(pickRouteOrder)
from t
where locationName <> 'NoLoc'
group by locationName;
另一种方法使用row_number()
:
select locationName, itemnumber, pickRouteOrder
from (select t.*,
row_number() over (partition by locationName order by locationName) as seqnum
from t
) t
where seqnum = 1 or locationName = 'NoLoc';