sql - 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
请指教!
谢谢
解决方案
我认为这可以满足您的要求:
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)
。
推荐阅读
- python - 熊猫,从 read_csv 合并日期和时间列
- tensorflow - 将 Keras 模型转换为 Layers API 格式模型以与 tensorflow.js 一起使用时出现问题
- angular - 在 Angular 测试中监视对象属性
- c# - 如何可视化指标应用洞察?
- java - 维护 RestController 的路径常量
- python - Numpy 中用于矩阵乘法的 matmul() 的旧版本是什么?
- flutter - 自定义验证 TextFormField Flutter
- excel - 函数未在子例程中完全执行
- python - Keras:没有输入的自定义层
- react-native - 保存 TextInput 数组的状态 - React Native