【问题标题】:Set one row fields as a multiplication of 2 others将一行字段设置为其他 2 个字段的乘积
【发布时间】:2015-07-10 21:38:20
【问题描述】:

我有这样一个结构的SQL表

Id    A     B    C   D
1     1     5    6   25
2     2     10   5   25
3     3     7    4   25
4     1     6    5   26
5     2     10   5   26
6     3     8    3   26

我想编写一个脚本,它将用 的乘积值更新 A=3 行中的所有 B & C 列 A = 1 和 A = 2(对于 D 列的相同值)

所以结果应该是

编号 A B C D 1 1 5 6 25 2 2 10 5 25 3 3 50 30 25 4 1 6 5 26 5 2 10 5 26 6 3 60 25 26

如何在 SQL 中编写这样的代码?

【问题讨论】:

  • A 的值会一直是 1,2,3 吗?
  • 是的,它们可以是 1、2、3、4 和 5。但脚本应该只更改值为 3 的行。
  • 并将它们设置为 Row1 值 * Row2 值

标签: sql sql-server tsql


【解决方案1】:

一种可能的方法是将表连接到自身两次:

update T3
set
    T3.B = T1.B * T2.B,
    T3.C = T1.C * T2.C
from [Table] T3
    join [Table] T1 on T1.A = 1 and T1.D = T3.D
    join [Table] T2 on T2.A = 2 and T2.D = T3.D
where
    T3.A = 3

【讨论】:

    猜你喜欢
    • 2019-07-23
    • 2012-06-19
    • 2014-07-20
    • 2023-04-06
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    相关资源
    最近更新 更多