首页 > 解决方案 > SQL 查看并将列中的不同值重命名为相互关联的重复值的不同名称

问题描述

我有一张这样的桌子:

Pkey               KName            Group
-----------------------------------------------
PC-229             History         Ancient
PC-229             History         Self
PC-229             History         Load
PC-228             History         Ancient
PC-234             History         Load
PC-235             History         Self

我需要一个查询来输出上述内容,该查询需要为上述内容输出一个视图,并将 Pkey 中重复值的组字段值的名称更改为“全部”。所以对于上面我们有(PC-229 重复,但是 Group 中的相关值是不同的,所以我需要它们在一个“All”值中,只返回一个 PC-229),所以我需要上表中类似下面的结果;

Pkey               KName            Group
-----------------------------------------------
PC-229             History          All
PC-228             History         Ancient
PC-234             History         Load
PC-235             History         Self

请指教!

谢谢

标签: sql

解决方案


我认为这可以满足您的要求:

select pkey, history,
       (case when min(group) = max(group) then min(group)
             else '**All**'
        end) new_group
from t
group by pkey, history;

我不确定是否history应该成为聚合的一部分。它在您的示例中始终具有相同的值,因此您可以将其从group by并使用中删除max(history)


推荐阅读