返回

sql-Oracle基于数学和其他记录子集更改记录中的值

发布时间:2022-03-08 21:52:54 324
# 数据库# redis# 数据库

TLD的R:如何使用同一表格中的其他记录更新基于数学的表格中的2+值?

我有一组记录(实际上有几条,所以这只是其中一条),它们有字符串和数值。比如说:

示例源数据

Name      HrValue  DayValue   IndName         IndHrValue   IndDayValue  IntPct    seq   main
BHight     286       1033     MiscBHight                                 .55      10
BHight                        BC               659          2033                  20    False
ATL                           Sinsel             8            34                  20    False
ATL        789       3922     MiscATL                                    .95      20    True
PSC        127       832      MiscPSC                                    .01      30

我需要做一些数学题一些其中一个的数量会影响其他的。在本例中,这三个序列号相同。

我需要为记录插入IndHrValue和IndDayValue,其中main='True'和seq是相同的,基于main的HrValue减去任何非main的IndHrValue之和;根据DayValue减去非main的所有IndDayValue之和,插入main IndDayValue。

所以,我需要在seq相同的集合中获得数字659,8和2033,34(其中main=False),然后使用它为IndHrValue插入789-(659+8),为IndDayValue插入3922-(2033+34)(其中main=True)。因此,表格将更新为如下所示:

更新后的源数据示例

Name      HrValue  DayValue   IndName         IndHrValue   IndDayValue  IntPct    seq   main
BHight     286       1033     MiscBHight                                 .55      10
BHight                        BC               659          2033                  20    False
ATL                           Sinsel             8            34                  20    False
ATL        789       3922     MiscATL          138          1923         .95      20    True
PSC        127       832      MiscPSC                                    .01      30

我不知道该怎么做。如有必要,我可以添加其他字段。我可以将这些数据写入一个临时表,或将其放入过程中的游标中。我可以创建表格,指明与什么相关的规则。(我需要这样做,因为有时我需要处理其他记录的HR值以及INDHR值。)

基本上,如果我有一组两个(或更多)记录,如何根据另一个记录中的值更改其中一个记录中的数据?

目前,我已经将数据写入了一个临时表,通过以下查询,我可以只提取三条记录:

select *
from MT_TMP_GRP_TBL tbl
where tbl.seq in (
    select seq from (
        select seq, count(*)
        from MT_TMP_GRP_TBL
        group by seq
        having count(*) > 1
    )
)
;

当然,当我现在有更多的集合也需要分组和更新时,这就行不通了。我的非伪表还有一个日期/时间字段和一个序列,它们一起构成了一个独特的集合。(因此,序列20将每小时重复一次,但我认为,一旦我能够理解我在这里展示的简化方案的解决方案,我可以将其复杂化以适应这个场景。)

然后我想我可以根据错误的记录来更新正确的记录。。。除了我就是不知道怎么做。

也许我可以把所有的main=False写到另一个表中,然后取出该表中的每个集合,在插入main=True的时候使用它?

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
下一篇
ios-Alamofire与Swift Combine 2022-03-08 20:41:41