sql - 如何获取分组的ID?
问题描述
我有用于分组值的 sql 脚本
select count(*), equity_name, date, field
from balance
group by equity_name, date, field
having count(*)>1
如何获取每个组的 ID?将来我需要将重复值插入另一个表。
我目前的结果:
结果我需要什么:
解决方案
如果要为组分配序列号,可以使用:
select count(*), equity_name, date, field,
row_number() over (order by equity_name, date, field) as id
from balance
group by equity_name, date, field
having count(*) > 1;
如果您想要一个不依赖于表中数据的组的稳定“名称”,您可以将这些字段连接在一起:
select count(*), equity_name, date, field,
concat_ws(':', equity_name, date, field) as id
from balance
group by equity_name, date, field
having count(*) > 1;
但是,如果您真的关心随着时间的推移保留组,我建议您将结果保存到具有自动生成identity
列的表中。
推荐阅读
- javascript - Vue材质选项卡不切换
- mongodb - 在 Mongo java 中获取所有具有名称、类型、属性的索引
- jquery - 如何使用正确的语法在基于 jQuery 的单页应用程序中的路由页面之间传递数据?
- angular - Ionic 4 & RxJS 6:Ionic-native HTTP get 方法不从服务器返回数据
- javascript - django - 引导 datetimepicker 总是在文本框中显示今天的日期
- image - 大量图像 - HTTP/1.1 与 HTTP/2?
- jsf - 在 p:inputNumber 上自动添加前导零
- javascript - vuejs在模板中渲染异步函数显示promise而不是返回数据
- reactjs - React Redux - 操作失败,解析错误
- react-native - react-navigation - 将参数传递到嵌套导航器中(在抽屉组件中获取参数,但不在主路由中获取它)