【发布时间】:2023-01-17 06:12:01
【问题描述】:
我正在寻找 Child 到 Parent 的总计
虽然我能够得到孩子总数,但任何人都可以协助以下相同的是
| CODE | PARENT CHLD | TERM_LOAN_TOTAL1 |
|---|---|---|
| 40100 | : AGRICULTURE | Required values 11565000 |
| 40110 : Crop Production | ||
| 40120 : Poultry and livestock | 11565000 | |
| 40130 : Fishing | ||
| 40140 : Plantation | ||
| 40150 : Agro Services | ||
| 40160 : Cash Crop | ||
| 40200 | : MINING AND QUARRYING |
这是我的 SQL 查询:
select cdd, prnt, chld, term_loan_total1
from (SELECT x.mis_code cdd,
CASE
WHEN x.mis_code LIKE '%00' THEN
to_char(lpad(nvl(x.mis_code, 0), 5, ':') || ' : ' ||
x.code_desc)
END prnt,
CASE
WHEN x.mis_code NOT LIKE '%00' THEN
to_char(lpad(nvl(x.mis_code, 0), 5, ':') || ' : ' ||
x.code_desc)
END chld,
(select sum(ct.amount_disbursed)
from cltb_account_master ct
left join mitm_customer_default mic
on ct.customer_id = mic.customer
left join gltm_mis_code msc
on mic.cust_mis_2 = msc.mis_code
where ct.product_code not in ('SBAD')
and msc.mis_code = x.mis_code) term_loan_total1
FROM gltm_mis_code x
WHERE mis_class in ('CBN_SUBS', 'CBN_SECT')
group by x.mis_code, x.code_desc
order by x.mis_code)
group by cdd, prnt, chld, term_loan_total1
order by cdd
附上两个表的CRUD脚本
-- Create table
create table CLTTBL
(
account_number VARCHAR2(35),
amount_disbursed NUMBER
)
tablespace test
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
prompt Importing table clttbl...
set feedback off
set define off
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221390016', 100000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221500006', 85000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221430007', 100000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221390011', 100000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221390012', 100000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221500003', 80000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221430004', 100000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221390003', 10000000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221430003', 80000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221390010', 100000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221390019', 85000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221430002', 50000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221400002', 100000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221390004', 100000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221390017', 100000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221390018', 100000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221430006', 100000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('001SBTL221400001', 85000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('000SBTL222130004', 10000000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('000SBTL221390001', 5000000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('000SBTL221390003', 10000000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('000SBTL221390007', 10000000);
insert into clttbl (ACCOUNT_NUMBER, AMOUNT_DISBURSED)
values ('000SBTL222130003', 5000000);
prompt Done.
MIS 表插入
create table gltm_mis_cd
(
PRNT VARCHAR2(35),
CHLD VARCHAR2(35),
CODE_DESC VARCHAR2(35),
)
tablespace test
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
prompt Importing table gltm_mis_cd...
set feedback off
set define off
insert into gltm_mis_cd (PRNT, CHLD, CODE_DESC)
values ('40100 : AGRICULTURE', null, 'AGRICULTURE');
insert into gltm_mis_cd (PRNT, CHLD, CODE_DESC)
values (null, '40110 : Crop Production', 'Crop Production');
insert into gltm_mis_cd (PRNT, CHLD, CODE_DESC)
values (null, '40120 : Poultry and livestock', 'Poultry and livestock');
insert into gltm_mis_cd (PRNT, CHLD, CODE_DESC)
values (null, '40130 : Fishing', 'Fishing');
insert into gltm_mis_cd (PRNT, CHLD, CODE_DESC)
values (null, '40140 : Plantation', 'Plantation');
insert into gltm_mis_cd (PRNT, CHLD, CODE_DESC)
values (null, '40150 : Agro Services', 'Agro Services');
insert into gltm_mis_cd (PRNT, CHLD, CODE_DESC)
values (null, '40160 : Cash Crop', 'Cash Crop');
insert into gltm_mis_cd (PRNT, CHLD, CODE_DESC)
values ('40200 : MINING AND QUARRYING', null, 'MINING AND QUARRYING');
insert into gltm_mis_cd (PRNT, CHLD, CODE_DESC)
values (null, '40210 : Metal: Tin, Iron, etc', 'Metal: Tin, Iron, etc');
insert into gltm_mis_cd (PRNT, CHLD, CODE_DESC)
values (null, '40220 : Non-metal Quarrying', 'Non-metal Quarrying');
insert into gltm_mis_cd (PRNT, CHLD, CODE_DESC)
values (null, '40230 : Others', 'Others');
提示完成。
【问题讨论】:
-
请edit 将问题包含在minimal reproducible example 中:
CREATE TABLE表的语句;生成输出的示例数据的INSERT语句;您尝试实现的逻辑的详细说明。 -
我完全同意你的建议,但是 SQL 中的一些表,数据量很大,提取的数据结构本质上很大,这些是上述请求面临的限制谢谢你的建议但是会努力提取同样的问候
-
这就是为什么我说 minimal reproducible example - 重点是最小 - 您可以从表中删除所有不必要的列,只包含几行数据。如果你不能给我们一个复制问题的方法,那么你希望我们如何回答这个问题?
-
当然,先生,我可以理解我准备好为我的数据库提供远程服务的要求,如果有人愿意参与远程服务,我可以提供 Ultraviewer 访问权限,让我知道那里的个人邮件 ID,我将通过邮件亲自联系
-
做不是这样做(这对您的数据库来说可能是一个巨大的安全问题,并且您也在隐式请求其他用户的电子邮件)。只需努力在您的问题中提供minimal reproducible example。