From ce2282e67376002a851b6a515d046077f2f84c25 Mon Sep 17 00:00:00 2001 From: "bai.jingfeng" Date: Fri, 29 Mar 2024 10:38:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20sql,=E5=A2=9E=E5=80=BC=E7=A8=8E?= =?UTF-8?q?=E8=AE=A1=E7=AE=97,=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E5=BC=80=E5=90=AF=E5=BC=80=E5=A4=B4=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=E6=8E=89=E7=9A=84=E6=9C=89=E7=94=A8=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/server/sqls/view_invoices_tax.sql | 50 +++++-------------- 1 file changed, 12 insertions(+), 38 deletions(-) diff --git a/packages/plugins/@hera/plugin-rental/src/server/sqls/view_invoices_tax.sql b/packages/plugins/@hera/plugin-rental/src/server/sqls/view_invoices_tax.sql index 34c4d0390..9d10d14f2 100644 --- a/packages/plugins/@hera/plugin-rental/src/server/sqls/view_invoices_tax.sql +++ b/packages/plugins/@hera/plugin-rental/src/server/sqls/view_invoices_tax.sql @@ -1,10 +1,6 @@ --- CREATE OR REPLACE VIEW --- public.view_invoice_tax AS --- 第一步-NO.1: 发票进项表和完税凭证表: --- 输入: invoice_input, invoice_receipt --- 1. 筛选所需字段并统一命名 --- 2. 将发票进项表和完税凭证表, 两个表的数据合并 --- 输出: A_INPUT +CREATE OR REPLACE VIEW + public.view_invoice_tax AS + -- 发票进项表和完税凭证表: 1. 筛选所需字段并统一命名,2. 将发票进项表和完税凭证表, 两个表的数据合并 WITH RECURSIVE A_INPUT AS ( SELECT @@ -21,10 +17,7 @@ WITH RECURSIVE FROM invoice_receipt ), - -- 第一步-NO.2:发票销项表: - -- 输入: invoice_output - -- 1. 筛选所需字段并统一命名 - -- 输出: A_OUTPUT + -- 发票销项表: 筛选所需字段并统一命名 A_OUTPUT AS ( SELECT seller_id AS company_id, -- 发票销项取销售方id,作为本公司id标识 @@ -33,12 +26,7 @@ WITH RECURSIVE FROM invoice_output ), - -- 第二步-NO.1: 聚合发票进项表: - -- 输入: A_INPUT - -- 1. 筛选出日期在'2022-01-01'之后的数据 - -- 2. 按照 company_id 和 date 聚合计算后的月份 "MONTH" - -- 3. 获取对应月份的进项税额 input_tax_amount - -- 输出: B_INPUT + -- 聚合A_INPUT: 1. 筛选出日期在'2022-01-01'之后的数据 2. 按照 company_id 和 date 聚合计算后的月份 "MONTH" 3. 获取对应月份的进项税额 input_tax_amount B_INPUT AS ( SELECT company_id, @@ -52,12 +40,7 @@ WITH RECURSIVE company_id, "MONTH" ), - -- 第二步-NO.2: 聚合B_OUTPUT: - -- 输入: A_OUTPUT - -- 1. 筛选出日期在'2022-01-01'之后的数据 - -- 2. 按照 company_id 和 date 聚合计算后的月份 "MONTH" - -- 3. 获取对应月份的销项税额 output_tax_amount - -- 输出: B_OUTPUT + -- 聚合B_OUTPUT: 1.筛选出日期在'2022-01-01'之后的数据 2. 按照 company_id 和 date 聚合计算后的月份 "MONTH" 3. 获取对应月份的销项税额 output_tax_amount B_OUTPUT AS ( SELECT company_id, @@ -71,11 +54,7 @@ WITH RECURSIVE company_id, "MONTH" ), - -- 第三步: JOIN 两个表,B_INPUT, B_OUTPUT: - -- 1. 聚合两个表,保留全部记录 - -- 2. 聚合后的表,如果某个表的对应取值字段为null,则置为0 - -- 输入: B_INPUT, B_OUTPUT - -- 输出: C_INTIAL_TAX + -- JOIN 两个表,B_INPUT, B_OUTPUT: 1. 聚合两个表,保留全部记录 2. 聚合后的表,如果某个表的对应取值字段为null,则置为0 C_INTIAL_TAX AS ( SELECT COALESCE(B_INPUT.company_id, B_OUTPUT.company_id) AS company_id, @@ -87,11 +66,7 @@ WITH RECURSIVE FULL JOIN B_OUTPUT ON B_INPUT.company_id = B_OUTPUT.company_id AND B_INPUT."MONTH" = B_OUTPUT."MONTH" ), - -- 第4步: JOIN 两个表,B_INPUT, B_OUTPUT: - -- 1. 聚合两个表,保留全部记录 - -- 2. 聚合后的表,如果某个表的对应取值字段为null,则置为0 - -- 输入: B_INPUT, B_OUTPUT - -- 输出: C_INTIAL_TAX + -- JOIN 两个表,B_INPUT, B_OUTPUT: 1. 聚合两个表,保留全部记录 2. 聚合后的表,如果某个表的对应取值字段为null,则置为0 D_INTIAL_TAX AS ( SELECT company_id, @@ -105,6 +80,7 @@ WITH RECURSIVE company_id, "MONTH" ), + -- 加工 D_INTIAL_TAX 给每行数据添加row_num,用于下边递归计算的时候进行累加定位 E_INTIAL_TAX AS ( SELECT company_id, @@ -125,7 +101,7 @@ WITH RECURSIVE company_id, "MONTH" ), - -- 第四步: 定义一个递归来根据上一个应缴税额,计算当前的应缴税额 + -- 定义一个递归来根据上一个应缴税额,计算当前的应缴税额 F_INTIAL_TAX AS ( -- 初始查询部分 ( @@ -183,7 +159,7 @@ WITH RECURSIVE ) ) ), - -- 求附加税和合计税额 + -- 拿到当月应缴税后, 求附加税和合计税额 G_INTIAL_TAX AS ( SELECT row_num, @@ -211,9 +187,7 @@ WITH RECURSIVE "MONTH" ) -- 主查询 - -- 第五步: 根据计算后的表 D_FINAL_TAX,获取最终的视图 - -- 输入: D_FINAL_TAX - -- 输出: 最终主查询视图, public.view_invoice_tax + -- 根据计算后的表,获取最终的视图 SELECT * FROM