首页 > 解决方案 > SQL Server 将多列乘以第二个表中的列中的值

问题描述

我有一个非常大的数据集,其中包含以下列:

[ID] [code_1] [code_2] [code_3] [code_4] 
         [days_code_1] [days_code_2] [days_code_3] [days_code_4]

ID列不是唯一的,[code_n]列是文本,[days_code_n]列是数字。

在第二个表中,我有两列,一列具有匹配的代码值[code_n],并且[cost value]对应于每个代码。

我希望能够将[days_code_n]乘以[cost value]。我可以单独执行此操作,但由于我无法控制的原因,我有 50 个[code_n][days_code_n]。由于 ID 值不是唯一的,我必须将数据保持为当前格式。

谁能告诉我如何在不运行 50 个查询的情况下将 code_days 列中的值乘以第二个表中 [the cost_value] 变量中的值。

标签: sqlsql-server

解决方案


由于您没有提及您的表的名称,因此我称它们为Table1and Table2

code_n您可以为您拥有的每一列加入第二个表:

SELECT Table1.ID
      ,Table1.days_code_1  * t2_01.cost_value AS result1
      ,Table1.days_code_2  * t2_02.cost_value AS result2
      ,Table1.days_code_3  * t2_03.cost_value AS result3
      ...
      ,Table1.days_code_50 * t2_50.cost_value AS result50
  FROM Table1
       JOIN Table2 t2_01 ON Table1.[code_1]  = t2_01.[code_n]
       JOIN Table2 t2_02 ON Table1.[code_2]  = t2_02.[code_n]
       JOIN Table2 t2_03 ON Table1.[code_3]  = t2_03.[code_n]
       ...
       JOIN Table2 t2_50 ON Table1.[code_50] = t2_50.[code_n]

并确保在Table1.code_...引用的每一列上都有一个外键Table2.code_n。否则查询可能会很慢。


推荐阅读