如何在同一表格中划分两列并将结果附加到SQL中的表格末尾

时间:2019-02-26 09:21:39

标签: sql sql-server

我对SQL不太熟练,我正在努力在SQL中划分两个表列并将结果追加到同一表的末尾。

最终结果是将除法平均值附加并存储到表1的末尾。

select RefKey, HPProD / HPSalD as 'HPAvgD' From [Table1]
select RefKey, HPProSD / HPSalSD as 'HPAvgSD' From [Table1]
select RefKey, HPProT / HPSalT as 'HPAvgT' From [Table1]
select RefKey, HPProF / HPSalF as 'HPAvgF' From [Table1]

我目前有这个,但后者不这样做-而是将除法输出到其自己的临时表中。

4 个答案:

答案 0 :(得分:1)

您是否在下面找到了一些内容,以便从现有表格中创建新表格

insert into table1 (RefKey,HPSalD,HPSalSD,HPSalT,HPSalF)   
select RefKey,HPProD / NULLIF(HPSalD,0) as HPAvgD,
     HPProSD / NULLIF(HPSalSD,0) as HPAvgSD,
   HPProT / NULLIF(HPSalT,0) as HPAvgT,
  HPProF / NULLIF(HPSalF,0) as HPAvgF from table1

答案 1 :(得分:1)

您可以尝试

create table [Table1] (RefKey int, HPProD int, HPSalD int)
insert into [Table1] values (1, 100, 20)

alter table [Table1] add HPAvgD int --If this colum is not in the table.
update [Table1] set HPAvgD = Case HPSalD when 0 then 0 else HPProD / HPSalD end

Live Demo

对于其他列,请在同一查询中使用逗号分隔规则。

答案 2 :(得分:1)

您需要为所有四个平均值添加4列,并运行下面给出的更新语句,

UPDATE [Table1] 
    SET HPAvgD = Case when HPSalD =0 then 0 else HPProD / HPSalD end,
        HPAvgSD= Case when  HPSalD= 0 then 0 else HPProSD / HPSalSD end,
        HPAvgT = Case  when HPSalT= 0 then 0 else HPProT / HPSalT end,
        HPAvgF = Case  when HPSalF = 0 then 0 else HPProF / HPSalF end

答案 3 :(得分:1)

添加计算列。例如:

alter table table1
     add PHAvgD as (HPProD / nullif(HPSalD));

您可以为每个新列重复此操作。

这种方法的优势在于,在获取值时便会对其进行计算-因此,对于新行和更新的列值,计算始终是准确的。