如何从另一个具有最小值的表中更新列?

塔里布

考虑具有以下详细信息的Tax_Details在此表中,每个Tax_code应该具有唯一的频率

[Tax_Code]   [Frequency]
A-001     
A-002
A-003
B-001
C-001

考虑另一个具有以下详细信息的Freq-Details在此表中,Tax_code可能具有多个频率

[Tax_Code]   [Frequency]
A-001        Weekly
A-001        Bi-Weekly
A-001        Daily 
A-002        Daily
A-002        Monthly 
A-003        Bi-Weekly
A-003        Monthly
B-001        Daily
B-001        Monthly
C-001        Monthly

考虑带有详细信息的第三表Frequency_Sequence在此表中,每个频率都有一定的顺序。

[Frequency] [Sequence]
Daily       1
Weekly      2
Bi-Weekly   3
Monthly     4 

我想Freq-Details表中的Frequency更新Tax_Details表中的[Frequency]列,并且频率序列应该最小。我的输出应该是这样的

[Tax_Code]   [Frequency]
A-001        Daily
A-002        Daily
A-003        Bi-Weekly
B-001        Daily
C-001        Monthly

请帮助获得此。提前致谢。

戈登·利诺夫

您可以使用条件聚合返回所需的结果:

select fd.tax_code,
       max(case when seqnum = 1 then fd.frequency end) as frequency
from (select fd.tax_code, fd.frequency,
             row_number() over (partition by fd.tax_code order by fs.sequence) as seqnum
      from freq_details fd join
           frequency_sequence fs
           on fd.frequency = fs.frequency
     ) fd
group by fd.tax_code;

您可以在更新中表示为:

update tax_details
    set frequency = (select fd.frequency
                     from freq_details fd join
                          frequency_sequence fs
                          on fd.frequency = fs.frequency
                     where fd.tax_code = tax_details.tax_code
                     order by fs.sequence
                     fetch first 1 row only
                    );

这两个都是标准SQL,并且可以在大多数数据库中使用。但是,语法在任何给定的数据库中可能略有不同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在另一个表ssms中更新具有相同值的列?

对于每个观察,找到具有另一个条件的列的最小值

根据另一个表中组的最小值在表中设置值

根据列的映射值从另一个表中获取列的最小值的最有效查询

如何从组中获取带有最小值的行,并从另一个表中获取相关的值?

Sqlite:从具有多个条件的另一个表中的多个列更新

如何在 df 中创建一个新列,在所选列之间具有最小值?

SQL从另一个相关表中的列中基于相应的最小值/最大值(值)获取值

如何选择一个具有其他列最大值的列,以及另一个表中该列的所有对应行?

如何将列中具有特定值的行复制到另一个工作表?

从另一个表中添加具有初始值的列

视图中具有静态值的另一个表中的SQL Server列

在具有来自另一个表的条件的列中插入值的函数

如何从另一个表中获取具有最旧值的项目列表

将具有标准值的另一个表的列中的所有记录插入到表中

使用具有中间表的另一个数据库中的另一个表的列更新部分数据

如何基于另一个数据框的最小值和最大值创建列

MySQL更新表仅具有另一个表的最大值

在 MySQL 中,如何根据另一个表中更新的列更改表中列的值?

根据另一个值更新最小值-MySQL

如何根据字典列表中另一个键的值获取键的最小值?

从表中选择所有行,除了具有相同 id 的另一个表中的行在另一列中具有特定值

如何使用子查询为另一个最小值挑选相应的值

如何根据另一个参考列中的数据值填充或更新Excel工作表中的列值

db2 sql,如何仅在具有一个表的同一查询中获取最小值和最大值?

如何在python中另一个组的条件下按组获取最小值?

在我的SQL查询中,如何有一个包含从另一个表查询的值的列?

更新具有另一个表ID的表中的记录

查询以基于另一个表的值获取列值,即一个表值在另一个表中具有字段名称