SQL查询,仅显示订单上的单个地址



我确定我在这里错过了一些简单的东西。我有一个查询,它返回的数据集如下所示:

**OrderNum     Address**
12345        1405 W Hollywood
12346        1555 3rd Ave
22334        PO Box 1467
22334        1327 14th Ln S.

我现在想要的是计算每个订单我只看到一个地址的位置,或者如果有多个地址,只需像这样显示"多个">

**OrderNum     Address**
12345        1405 W Hollywood
12346        1555 3rd Ave
22334        Multiple

如果我尝试在诸如"计数时(OrderNum(> 1 ..."之类的情况下执行此操作。然后我必须按地址分组,它不起作用。其他想法?我的大脑被困在这个上面,所以我需要轻推一下。谢谢!

select ordernum, 
case when count(*) > 1 
then 'multiple'
else max(address)
end as address
from your_table
group by ordernum

您需要聚合所有不作为分组依据的列。我猜你没有使用max(address)或类似的东西。

使用窗口函数:

select distinct ordernum, 
(case when AddrCount > 1 then 'Multiple' else address end) as address
from (select *, count(*) over (partition by OrderNum) as AddrCount
from table 
) t;

最新更新