我是SQL的新手,需要一些帮助。我有一个具有一些数值的表,我需要使用表中其他列的计算填充列(所有值为null)。 例如。我有一些价值观和总价值。我需要另一列来计算这两者之间的百分比。
我有很多列需要根据不同的列进行计算。例如。列名“risk1”将帮助我计算并填充另一个名为“1per”的列。我的代码看起来像这样:
UPDATE DPRA2_Export
SET "1Per" = ((CAST(Risk1 AS DECIMAL (38,2))/CAST(GrandTotal AS DECIMAL(38,2))) * 100);
UPDATE DPRA2_Export
SET "2Per" = ((CAST(Risk2 AS DECIMAL (38,2))/CAST(GrandTotal AS DECIMAL(38,2))) * 100);
UPDATE DPRA2_Export
SET "3Per" = ((CAST(Risk3 AS DECIMAL (38,2))/CAST(GrandTotal AS DECIMAL(38,2))) * 100);
.................
它继续这样下去。
有没有办法可以循环这个东西,而不是一遍又一遍地写。代码中唯一发生变化的是列名“Risk%”和SET列名“%Per”
有什么想法吗?
答案 0 :(得分:0)
首先,拥有连续名称的列 - ,,。 。 。 - 很可疑通常,这种格式不适合关系数据库。相反,每个风险应该存储一行数据和风险标识符。
此类表通常用于输出目的,但不适用于存储数据。
其次,划分的数据类型可能完全没必要。如果您使用的是进行整数除法且数值为整数的数据库,则可以使用更简单的方法进行转换,例如' * 1.0'。
最后,您可以发出一个update
:
UPDATE DPRA2_Export
SET "1Per" = Risk1*1.0 / GrandTotal,
"2Per" = Risk2*1.0 / GrandTotal,
"3Per" = Risk3*1.0 / GrandTotal ;
您可以使用information_schema
表通过查询列来构造逻辑。