<1>应用视图1
合并几张表的数据,并且从合并的数据中统计出数据。
原则是合并前两张表,然后把前两张表当作一个表,在和下一个表合并,依次类推。最后给出统计条件.
-- View: view_class_supplier_current_balance_general1
-- DROP VIEW view_class_supplier_current_balance_general1;
CREATE OR REPLACE VIEW view_class_supplier_current_balance_general1 AS
((( SELECT nextval('purchaseview'::regclass) AS view_id, p.partner_name, '预付'::character varying::character varying(255) AS balance_name, sum(p.total_amount) AS balance
FROM ((( SELECT a.order_number, a.partner_name, a.total_amount, a.business_type, 'inboundPayment' AS class_name, a.classification_status1, '预付' AS pay_type
FROM inbound_payment a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '预付账款'::text
UNION ALL
SELECT a.order_number, a.partner_name, a.total_amount, a.business_type, 'inboundPayment' AS class_name, a.classification_status1, '预付' AS pay_type
FROM inbound_payment a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '应付转预付'::text)
UNION ALL
SELECT a.order_number, a.partner_name, - a.total_amount AS total_amount, a.business_type, 'inboundPayment' AS class_name, a.classification_status1, '预付' AS pay_type
FROM inbound_payment a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '预付冲应付'::text)
UNION ALL
SELECT a.order_number, a.partner_name, sum(a.sub_total_amt) AS total_amount, a.business_type, 'inboundReturn' AS class_name, a.classification_status1, '预付' AS pay_type
FROM inbound_return_item a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '冲抵往来'::text AND a.refer_order_number IS NULL
GROUP BY a.order_number, a.partner_name, a.business_type, a.classification_status1) p
GROUP BY p.partner_name
UNION ALL
SELECT nextval('purchaseview'::regclass) AS view_id, p.partner_name, '应付'::character varying::character varying(255) AS balance_name, sum(p.total_amount) AS balance
FROM ((( SELECT a.order_number, a.partner_name, - a.total_amount AS total_amount, a.business_type, 'inboundPayment' AS class_name, a.classification_status1, '应付' AS pay_type
FROM inbound_payment a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '预付冲应付'::text
UNION ALL
SELECT a.order_number, a.partner_name, a.total_amount, a.business_type, 'inboundPayment' AS class_name, a.classification_status1, '应付' AS pay_type
FROM inbound_payment a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '应付转预付'::text)
UNION ALL
SELECT a.order_number, a.partner_name, - sum(a.sub_total_amt) AS total_amount, a.business_type, 'inboundReturn' AS class_name, a.classification_status1, '应付' AS pay_type
FROM inbound_return_item a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '冲抵往来'::text AND a.refer_order_number IS NOT NULL
GROUP BY a.order_number, a.partner_name, a.business_type, a.classification_status1)
UNION ALL
SELECT a.order_number, a.partner_name, a.total_amount, a.business_type, 'inboundOrder' AS class_name, '' AS classification_status1, '应付' AS pay_type
FROM inbound_order a
WHERE a.order_state::text = '有效'::text) p
GROUP BY p.partner_name)
UNION ALL
SELECT nextval('purchaseview'::regclass) AS view_id, p.partner_name, '已付'::character varying::character varying(255) AS balance_name, sum(p.total_amount) AS balance
FROM ( SELECT a.order_number, a.partner_name, a.total_amount, a.business_type, 'inboundPayment' AS class_name, a.classification_status1, '已付' AS pay_type
FROM inbound_payment a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '应付账款'::text) p
GROUP BY p.partner_name)
UNION ALL
SELECT nextval('purchaseview'::regclass) AS view_id, a.client_name AS partner_name, '初始应付'::character varying::character varying(255) AS balance_name, a.init_payable AS balance
FROM supplier a)
UNION ALL
SELECT nextval('purchaseview'::regclass) AS view_id, a.client_name AS partner_name, '信用额度'::character varying::character varying(255) AS balance_name, a.credit_amount AS balance
FROM supplier a;
ALTER TABLE view_class_supplier_current_balance_general1 OWNER TO postgres;
<2>应用视图2
单纯的合并几张表中的数据。
-- View: viewpayquery_temp_returned_detail
-- DROP VIEW viewpayquery_temp_returned_detail;
CREATE OR REPLACE VIEW viewpayquery_temp_returned_detail AS
SELECT a.refer_order_number, sum(a.sub_total_amt) AS return_amount_real
FROM inbound_return_item a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '冲抵往来'::text
GROUP BY a.refer_order_number
UNION ALL
SELECT a.refer_order_number, sum(a.sub_total_amt) AS return_amount_real
FROM sale_return_item a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '冲抵往来'::text
GROUP BY a.refer_order_number;
<3>应用视图3
合并几张表的数据,把每次合并的表作为最后查询出结果集的一行
-- View: view_class_supplier_current_balance_general1
-- DROP VIEW view_class_supplier_current_balance_general1;
CREATE OR REPLACE VIEW view_class_supplier_current_balance_general1 AS
((( SELECT nextval('purchaseview'::regclass) AS view_id, p.partner_name, '预付'::character varying::character varying(255) AS balance_name, sum(p.total_amount) AS balance
FROM ((( SELECT a.order_number, a.partner_name, a.total_amount, a.business_type, 'inboundPayment' AS class_name, a.classification_status1, '预付' AS pay_type
FROM inbound_payment a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '预付账款'::text
UNION ALL
SELECT a.order_number, a.partner_name, a.total_amount, a.business_type, 'inboundPayment' AS class_name, a.classification_status1, '预付' AS pay_type
FROM inbound_payment a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '应付转预付'::text)
UNION ALL
SELECT a.order_number, a.partner_name, - a.total_amount AS total_amount, a.business_type, 'inboundPayment' AS class_name, a.classification_status1, '预付' AS pay_type
FROM inbound_payment a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '预付冲应付'::text)
UNION ALL
SELECT a.order_number, a.partner_name, sum(a.sub_total_amt) AS total_amount, a.business_type, 'inboundReturn' AS class_name, a.classification_status1, '预付' AS pay_type
FROM inbound_return_item a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '冲抵往来'::text AND a.refer_order_number IS NULL
GROUP BY a.order_number, a.partner_name, a.business_type, a.classification_status1) p
GROUP BY p.partner_name
UNION ALL
SELECT nextval('purchaseview'::regclass) AS view_id, p.partner_name, '应付'::character varying::character varying(255) AS balance_name, sum(p.total_amount) AS balance
FROM ((( SELECT a.order_number, a.partner_name, - a.total_amount AS total_amount, a.business_type, 'inboundPayment' AS class_name, a.classification_status1, '应付' AS pay_type
FROM inbound_payment a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '预付冲应付'::text
UNION ALL
SELECT a.order_number, a.partner_name, a.total_amount, a.business_type, 'inboundPayment' AS class_name, a.classification_status1, '应付' AS pay_type
FROM inbound_payment a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '应付转预付'::text)
UNION ALL
SELECT a.order_number, a.partner_name, - sum(a.sub_total_amt) AS total_amount, a.business_type, 'inboundReturn' AS class_name, a.classification_status1, '应付' AS pay_type
FROM inbound_return_item a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '冲抵往来'::text AND a.refer_order_number IS NOT NULL
GROUP BY a.order_number, a.partner_name, a.business_type, a.classification_status1)
UNION ALL
SELECT a.order_number, a.partner_name, a.total_amount, a.business_type, 'inboundOrder' AS class_name, '' AS classification_status1, '应付' AS pay_type
FROM inbound_order a
WHERE a.order_state::text = '有效'::text) p
GROUP BY p.partner_name)
UNION ALL
SELECT nextval('purchaseview'::regclass) AS view_id, p.partner_name, '已付'::character varying::character varying(255) AS balance_name, sum(p.total_amount) AS balance
FROM ( SELECT a.order_number, a.partner_name, a.total_amount, a.business_type, 'inboundPayment' AS class_name, a.classification_status1, '已付' AS pay_type
FROM inbound_payment a
WHERE a.order_state::text = '有效'::text AND a.classification_status1::text = '应付账款'::text) p
GROUP BY p.partner_name)
UNION ALL
SELECT nextval('purchaseview'::regclass) AS view_id, a.client_name AS partner_name, '初始应付'::character varying::character varying(255) AS balance_name, a.init_payable AS balance
FROM supplier a)
UNION ALL
SELECT nextval('purchaseview'::regclass) AS view_id, a.client_name AS partner_name, '信用额度'::character varying::character varying(255) AS balance_name, a.credit_amount AS balance
FROM supplier a;
ALTER TABLE view_class_supplier_current_balance_general1 OWNER TO postgres;
分享到:
相关推荐
Postgres数据库SQL注入手册1
postgres数据库odbc数据源 用于odbc连接postgres数据库
Postgres数据库基于持久内存的优化探索.pptx
postgres数据库linux版本
PostgresSQL是一个很优秀的开源数据库,并提供了针对空间数据的存扩展;这个PPT介绍了PostgresSQL数据库的基本情况
本资源使用python进行编写,解压后在pycharm中进行使用,该探查数据库适用于postgres数据库,运行结束后以.xlsx格式进行保存,探查的内容有:数据库名称、数据表名称、数据表注释、排序、字段名称、字段注释、字段...
postgres数据库编程手册,html的文档,很好用的。
postgres数据库中文手册,基本语言和编程规范
pgadmin管理工具,支持对postgresqlV11.1以上的版本进行管理。包括存储过程 表分区
postgressql 连接数据库 和关闭数据库
gadmin 是一个设计,维护和管理 Postgres 数据库用的通用工具。 它能在各种平台的Windows,Linux,FreeBSD,Mac和Solaris服务器上使用。 特性包括: 任意 SQL 语句。 可用于数据库,表,索引,序列,视图,触发器...
针对Postgres服务器端常用操作命令汇总 由于本人经常操作Postgres数据库养成笔记习惯 所以整理了一下针对数据库操作的各种命令
jmeter连接postgres数据库的样例
它将运行4个容器:zookeeper实例、kafka实例、postgres数据库和应用程序二进制文件本身。可以构建并运行一个可选的容器,其中包含用于测试应用程序提供端点的swagger实例。 使用浏览器打开以下地址即可测试:
一、数据库搭建 1、yum 指定目录安装 https://blog.csdn.net/llwy1428/article/details/105143053 2、yum 直接安装 https://blog.csdn.net/llwy1428/article/details/102486414 3、编译安装 ...4、PostgreSql 基本操作 ...
pg_insights:方便SQL集合,用于监视Postgres数据库的运行状况
一个基于C#实现的Postgres数据库向导式创建的程序代码。
postgres数据库维护方法和恢复.docx
SQL必知必会PostgresSQL数据导入脚本 SQL必知必会PostgresSQL数据导入脚本 SQL必知必会PostgresSQL数据导入脚本