我有一个查询,它调用一个包中的函数来创建一个约30列的总和的百分比值。根据嵌套选择更新Oracle表。包函数
我想要做的是根据“计算列的总和”作为百分比更新每一行。
的选择查询是:
SELECT
checklist_id,
row_status,
eba_cm_checklist_std.get_row_percent_complete(pc.id,pc.checklist_id,pc.max_col_num) AS percent_complete
FROM
(
SELECT
(
SELECT
COUNT(id)
FROM
eba_cm_checklist_columns
WHERE
checklist_id = r.checklist_id
) AS max_col_num,
r.*
FROM
eba_cm_checklist_rows r
ORDER BY
r.row_order,
r.name
) pc
,并创建百分比package.function是 “eba_cm_checklist_std.get_row_percent_complete”。
查询输出如下:
checklist_id row_status percent_complete
97176759931088640236098007249022291412 Red 0
97176759931071715274623402440576404948 Red 0
97176759931071715274623402440576404948 Red 0
97176759931071715274623402440576404948 Red 0
97176759931088640236098007249022291412 Red 0
97176759931088640236098007249022291412 Red 0
97176759931081386681180319473974054356 Grey 100
97176759931051163535689953744606399956 Grey 100
我遇到的困难是,该表达式使用基于函数的输出嵌套select语句,我不能让我围绕如何头根据查询的输出更新物理“eba_cm_checklist_rows”表。
基本上,我要做到以下几点:
update set row_status = 'Green' where percent_complete = 100
'COUNT(*)'计数的所有行,但'计数(COL)'只能算作行,其中山坳不为空。 – jarlh
好吧,我已经用'count(id)'替代了count(*)'(id是每行唯一/ pk) – Huskie69