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专栏下还有其他价值观,而不是历史,所以我在这里提到如何计算“所有”和“古代”的历史,等等?谢谢