我们可以在没有循环的情况下获得oracle中列表属性的总和吗?
Can We get sum of list attributes in oracle without loop?
我们可以得到下面列表中所有小时的总和吗?我将求和函数与 JSON_QUERY 函数一起使用,但出现错误。
SET SERVEROUT ON
DECLARE
data varchar2(200);
JSONSTRING VARCHAR2(4000):= ' {"Implement_Details": [
{
"Hours": "100",
"Implement1": "Laser Leveler"
},
{
"Hours": "400",
"Implement1": "Trolley"
},
{
"Hours": "100",
"Implement1": "Cultivator"
}
]}';
BEGIN
SELECT SUM(JSON_QUERY(JSONSTRING, '$.Implement_Details[*].Hours' WITH ARRAY WRAPPER)) INTO DATA
FROM dual;
DBMS_OUTPUT.PUT_LINE(data);
end;
预期输出:
100 + 400 + 100 = 600
Error report - ORA-01722: invalid number ORA-06512: at line 20
01722. 00000 - "invalid number"
*Cause: The specified number was invalid.
*Action: Specify a valid number.
您不能对整个 ARRAY 使用 SUM()
。
我所做的是将 Hours
变成 table 并在列上使用 SUM()
,就像通常在 SELECT
子句中那样。
SET SERVEROUT ON
DECLARE
data varchar2(200);
JSONSTRING VARCHAR2(4000):= ' {"Implement_Details": [
{
"Hours": 100,
"Implement1": "Laser Leveler"
},
{
"Hours": 400,
"Implement1": "Trolley"
},
{
"Hours": 100,
"Implement1": "Cultivator"
}
]}';
BEGIN
SELECT SUM(value) INTO DATA
FROM JSON_TABLE((JSON_QUERY(JSONSTRING, '$.Implement_Details[*].Hours' WITH ARRAY WRAPPER)), '$[*]' COLUMNS (value PATH '$'));
DBMS_OUTPUT.PUT_LINE(data);
end;
我们可以得到下面列表中所有小时的总和吗?我将求和函数与 JSON_QUERY 函数一起使用,但出现错误。
SET SERVEROUT ON
DECLARE
data varchar2(200);
JSONSTRING VARCHAR2(4000):= ' {"Implement_Details": [
{
"Hours": "100",
"Implement1": "Laser Leveler"
},
{
"Hours": "400",
"Implement1": "Trolley"
},
{
"Hours": "100",
"Implement1": "Cultivator"
}
]}';
BEGIN
SELECT SUM(JSON_QUERY(JSONSTRING, '$.Implement_Details[*].Hours' WITH ARRAY WRAPPER)) INTO DATA
FROM dual;
DBMS_OUTPUT.PUT_LINE(data);
end;
预期输出:
100 + 400 + 100 = 600
Error report - ORA-01722: invalid number ORA-06512: at line 20 01722. 00000 - "invalid number" *Cause: The specified number was invalid. *Action: Specify a valid number.
您不能对整个 ARRAY 使用 SUM()
。
我所做的是将 Hours
变成 table 并在列上使用 SUM()
,就像通常在 SELECT
子句中那样。
SET SERVEROUT ON
DECLARE
data varchar2(200);
JSONSTRING VARCHAR2(4000):= ' {"Implement_Details": [
{
"Hours": 100,
"Implement1": "Laser Leveler"
},
{
"Hours": 400,
"Implement1": "Trolley"
},
{
"Hours": 100,
"Implement1": "Cultivator"
}
]}';
BEGIN
SELECT SUM(value) INTO DATA
FROM JSON_TABLE((JSON_QUERY(JSONSTRING, '$.Implement_Details[*].Hours' WITH ARRAY WRAPPER)), '$[*]' COLUMNS (value PATH '$'));
DBMS_OUTPUT.PUT_LINE(data);
end;