oracle - 通过分组更新计数器
问题描述
我有一张桌子T1
,看起来像这样
DATUM ID NAME ROW_COUNT
2/14/2021 101 ALEX
2/14/2021 100 SHAUN
2/14/2021 102 SCOTT
2/15/2021 100 SHAUN
2/15/2021 101 ALEX
2/15/2021 102 SCOTT
2/16/2021 100 SHAUN
2/16/2021 101 ALEX
2/16/2021 102 SCOTT
其中有列,,,,我datum
想像这样更新计数器ID
Name
Row_Count
DATUM ID NAME ROW_COUNT
2/14/2021 101 ALEX 1
2/14/2021 100 SHAUN 1
2/14/2021 102 SCOTT 1
2/15/2021 100 SHAUN 2
2/15/2021 101 ALEX 2
2/15/2021 102 SCOTT 2
2/16/2021 100 SHAUN 3
2/16/2021 101 ALEX 3
2/16/2021 102 SCOTT 3
我这样尝试过
UPDATE DAILY_PRODUCTION
SET DOC_ID=DOC_ID+1
GROUP BY DATUM;
但没有工作任何人都知道请。
解决方案
我建议不要进行此更新,而是使用以下 select with DENSE_RANK
:
SELECT DATUM, ID, NAME, DENSE_RANK() OVER (ORDER BY DATUM) ROW_COUNT
FROM DAILY_PRODUCTION
ORDER BY DATUM, ID;
不想维护该ROW_COUNT
列的原因是它可能是派生数据。因此,随着数据的变化,您可能会被迫多次运行此更新。
推荐阅读
- netsuite - Netsuite scriptContext.oldRecord 和 scriptContext.newRecord 返回相同的东西
- excel - 将数据输入列时在excel中播放声音
- c - C中的指针给出负值
- c++ - C++编写一个程序,提示用户以数字形式输入一个人的出生日期(Throw/Catch)
- pandas - 如何让熊猫返回 datetime64 而不是 Timestamp?
- excel - 如何按字母顺序对给定范围进行排序并将单元格名称与正在排序的单元格保持联系?
- ruby-on-rails - 如何让 sphinx (search) gem 在诸如 heroku 这样的 PaaS 中工作
- ibm-watson - 使用最终用户反馈来提高 Knowledge Studio 模型的性能
- rest - REST API 的验证 URL 资源
- java - 为什么我不能在 Windows 上直接使用 Java 执行 Cygwin .exe?