视图的使用及sql语句阅读
视图的使用及sql语句阅读
1、视图
1.1概念
视图是由数据库中的一个表或多个表导出的虚拟表,其作用是方便用户对数据的操作。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。
1.2常见应用
- 重用SQL语句
- 简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道其基本查询细节。
- 使用表的一部分而不是整个表。
- 保护数据。可以授权用户访问表的特定部分的权限,而不是整个表的访问权限。
- 更新数据格式和表示。视图可返回与底层表的表示和格式不同的数据。
需求
在表单添加显示“库存地”一列,在后台修改视图查询与sql查询语句。
修改视图
1.出库视图(修改后)
create or replace view tymi_gk_ck (stock_code, buy_order_no, dst_mat_code, work_date, dry_wgt) as select t.src_stock_code,t.buy_order_no,t.src_mat_code,work_date,sum(t.dry_wgt) from tymirc1 t where length(t.src_stock_code)>4 group by t.src_stock_code,t.buy_order_no,t.src_mat_code,work_date;
2.入库视图(修改后)
create or replace view tymi_gk_rk (stock_code, buy_order_no, dst_mat_code, work_date, dry_wgt) as select t.dst_stock_code,t.buy_order_no,t.dst_mat_code,work_date,sum(t.dry_wgt) from tymirc1 t where length(t.dst_stock_code)>4 group by t.dst_stock_code,t.buy_order_no,t.dst_mat_code,work_date;
修改查询语句
SELECT FROM (Select ROWNUM AS ROWNO, A. from ( select qm.STOCK_CODE,qm.BUY_ORDER_NO,qm.DST_MAT_CODE,qm.RB_VALUE,qm.SB_VALUE,qm.QM_VALUE from ( select a.STOCK_CODE, a.BUY_ORDER_NO, a.DST_MAT_CODE,coalesce(b.RB_VALUE,0) RB_VALUE,coalesce(c.SB_VALUE,0) SB_VALUE, coalesce(b.RB_VALUE,0) - coalesce(c.SB_VALUE,0) QM_VALUE from( select STOCK_CODE,BUY_ORDER_NO,DST_MAT_CODE from tymi_gk_rk where (WORK_DATE <='20230614') union select STOCK_CODE,BUY_ORDER_NO, DST_MAT_CODE from tymi_gk_ck where (WORK_DATE <='20230614') ) a left join (select BUY_ORDER_NO, DST_MAT_CODE, sum(dry_wgt) RB_VALUE from tymi_gk_rk where (WORK_DATE <='20230614') group by BUY_ORDER_NO, DST_MAT_CODE ) b on a.BUY_ORDER_NO=b.BUY_ORDER_NO and a.DST_MAT_CODE=b.DST_MAT_CODE left join (select BUY_ORDER_NO, DST_MAT_CODE, sum(dry_wgt) SB_VALUE from tymi_gk_ck where (WORK_DATE <='20230614') group by BUY_ORDER_NO, DST_MAT_CODE ) c on a.BUY_ORDER_NO=c.BUY_ORDER_NO and a.DST_MAT_CODE=c.DST_MAT_CODE where 1=1 ) qm order by qm.BUY_ORDER_NO,qm.DST_MAT_CODE ) A WHERE ROWNUM <= 50 ) TABLE_ALIAS WHERE TABLE_ALIAS.ROWNO >= 1
ps:关于很长的SQL查询语句可以根据括号的结合去缩进