我对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]
我目前有这个,但后者不这样做-而是将除法输出到其自己的临时表中。
答案 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
对于其他列,请在同一查询中使用逗号分隔规则。
答案 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));
您可以为每个新列重复此操作。
这种方法的优势在于,在获取值时便会对其进行计算-因此,对于新行和更新的列值,计算始终是准确的。