我如何在Oracle中分配值

时间:2015-07-10 13:51:21

标签: oracle

问候。

你能帮我解决以下问题吗? 我有以下记录:

**ITEM VALUES**
A001 29440
A002 29440
A003 29440
A004 29440
A005 29440
场值的

Σ等于147200,但实际值为148 200。 如何在VALUES列中为Σ分配每个值恰好等于148 200。

非常感谢。

1 个答案:

答案 0 :(得分:0)

如果没有关于如何获得“真实”值以及如何分配差异的更好指南,您可以做一些微不足道的事情来修复数据 - 例如为每个值添加相等的差异份额。

像这样:

SQL Fiddle

Oracle 11g R2架构设置

CREATE TABLE TEST ( ITEM, VALUE ) AS
          SELECT 'A001', 29440 FROM DUAL
UNION ALL SELECT 'A002', 29440 FROM DUAL
UNION ALL SELECT 'A003', 29440 FROM DUAL
UNION ALL SELECT 'A004', 29440 FROM DUAL
UNION ALL SELECT 'A005', 29440 FROM DUAL;

UPDATE TEST
SET VALUE = VALUE + ( SELECT (148200 - SUM( VALUE ))/COUNT(1) FROM TEST );

查询1

SELECT * FROM TEST

<强> Results

| ITEM | VALUE |
|------|-------|
| A001 | 29640 |
| A002 | 29640 |
| A003 | 29640 |
| A004 | 29640 |
| A005 | 29640 |