SQL查看列中的不同值并将其重命名为另一个不同的名称,对于相关的重复值,请使用不同的名称

SQL查看列中的不同值并将其重命名为另一个不同的名称,对于相关的重复值,请使用不同的名称,sql,Sql,我有一张这样的桌子: Pkey KName Group ----------------------------------------------- PC-229 History Ancient PC-229 History Self PC-229 History Load PC-228 History

我有一张这样的桌子:

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中重复值的组字段值的名称更改为“All”。因此,对于上面我们有(PC-229重复,但组中的相关值不同,所以我需要它们在一个“全部”值中,只返回一次PC-229),所以我需要上表中的结果如下所示

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


谢谢

我想这正是你想要的:

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

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

对不起,这适用于Oracle查询吗?那个新团队的目的是什么?@HKLM。这应该适用于Oracle,尽管我会将
group
重命名为其他名称,因为它是一个SQL关键字。实际上,我将上表这是另一个查询的结果,它是“SELECT JI.PKEY,JP.KName,JC.Group FROM Jumara.JumaraIssue JI INNER JOIN Jumara.NODE_ID INNER JOIN Jumara.COMP JN.SI_NODE_ID=JC.ID INNER JOIN Jumara.PROJECT JP ON JP.ID=JC.PROJECT'这就是为什么我问这是否适用于Oracle的原因,我不确定是否根据您的案例条件将上述内容添加为子查询,但不确定这是否适用!有什么想法吗?好的,我能够调整查询,并且能够运行它,谢谢你的帮助,它成功了。Cheerri能够用您的CASe子查询重新生成主查询,我问了另外一个问题,您如何识别另一个查询来计算Group by Kname下的字段,例如,从上表中,我想知道有多少“All”是为历史创建的,还有多少“Oliver”是为历史创建的,顺便说一句,在Kname专栏下还有其他价值观,而不是历史,所以我在这里提到如何计算“所有”和“古代”的历史,等等?谢谢