做报表(ireport)时候要进行分组汇总,但是报表的汇总智能在 group footer 里面,写在group header里面没有值,于是打算从数据源里面做处理,实践出来有两种方式:
第一种:
储位 | 物料 | 数量 |
001 | 100 | |
A | 10 | |
B | 90 | |
002 | 30 | |
C | 29 | |
A | 1 |
上面,通过两个查询union 和 order by 可以获得在每个明细之前或者之后,增加一个汇总行的结构,sql如下:
select A.BILLID, SUM_QTY, ONL_NOTICE_QTY from ((SELECT BILLID, ONL_NOTICE_QTY FROM WM_OUTBOUND_NOTICE_LINE WHERE BILLID = 14339) A LEFT JOIN (SELECT BILLID, SUM(ONL_NOTICE_QTY) SUM_QTY FROM WM_OUTBOUND_NOTICE_LINE WHERE BILLID = 14339 GROUP BY BILLID) B ON A.BILLID = B.BILLID) ORDER BY BILLID
第二种:
A | 1 | 6 |
2 | 6 | |
3 | 6 | |
B | 7 | 9 |
2 | 9 | |
C | 5 | 5 |
也就是,增加一列来记录汇总数量,用join 实现,如果需要多个分组,就要多次join:
select A.BILLID, SUM_QTY, ONL_NOTICE_QTY from ((SELECT BILLID, ONL_NOTICE_QTY FROM WM_OUTBOUND_NOTICE_LINE) A LEFT JOIN (SELECT BILLID, SUM(ONL_NOTICE_QTY) SUM_QTY FROM WM_OUTBOUND_NOTICE_LINE GROUP BY BILLID) B ON A.BILLID = B.BILLID left join () c ) ORDER BY BILLID
项目中的实际sql是:
SELECT dtl.source_shop, dtl.wave_no, dtl.owner_name, dtl.carrier_name, dtl.material_wave_type_count, dtl.material_wave_sum_count, dtl.storeroom_name, dtl.storearea_name, dtl.location_code, dtl.location_name, dtl.material_code, dtl.material_name, dtl.material_barcode, dtl.material_spec, dtl.wave_order, dtl.material_loc_qty, grp_loc_mat.sum_loc_mat_qty, grp_loc.sum_loc_qty, dtl.order_no, dtl.express_no from (select onh.onh_source_shop source_shop, l.billdtlid, h.SH_WAVE_NO wave_no, 'xxx' owner_name, 'xxx' carrier_name, 'xxx' material_wave_type_count, 'xxx' material_wave_sum_count, 'xxx' storeroom_name, 'xxx' storearea_name, loc.code location_code, loc.name location_name, m.code material_code, m.name material_name, 'xxx' material_barcode, m.mat_spec material_spec, h.sh_wave_order wave_order, l.SL_SHIP_QTY material_loc_qty, onh.onh_external_order_no order_no, onh.onh_consign_no express_no, l.sl_location_id, l.sl_material_id from wm_ship_line l left join wm_ship_header h ON l.billid = h.billid left join wm_outbound_notice_header onh ON h.sh_notice_header_id = onh.billid left join cp_owner c ON c.id = h.sh_carrier_id left join cp_location loc ON loc.id = l.sl_location_id left join cp_material m ON m.id = l.sl_material_id where h.sh_notice_header_id in (1)) dtl left join (select l.sl_location_id, sum(l.SL_SHIP_QTY) sum_loc_qty from wm_ship_line l left join wm_ship_header h ON l.billid = h.billid where h.sh_notice_header_id in (1) group by l.sl_location_id) grp_loc ON dtl.sl_location_id = grp_loc.sl_location_id left join (select l.sl_location_id, l.sl_material_id, sum(l.SL_SHIP_QTY) sum_loc_mat_qty from wm_ship_line l left join wm_ship_header h ON l.billid = h.billid where h.sh_notice_header_id in (1) group by l.sl_location_id , l.sl_material_id) grp_loc_mat ON dtl.sl_location_id = grp_loc_mat.sl_location_id and dtl.sl_material_id = grp_loc_mat.sl_material_id order by dtl.location_code , dtl.material_code , dtl.wave_order
end。
相关推荐
2. 统计查询:统计查询通常涉及聚合函数,如COUNT、SUM、AVG、MAX和MIN,它们对一组值进行计算,返回一个单一的汇总结果。 3. 条件过滤:WHERE子句用于从数据集中筛选满足特定条件的行。在统计查询中,这可以用来按...
小编对工作中遇到的用数据库语句进行分类汇总的查询信息的信息。压缩包中附件相关的数据库和 sql脚本。 详细的思路过程见博客:https://blog.csdn.net/aiming66/article/details/80717802
20191108_13001-13003 贷款科目与总账汇总明细(核心系统).sql
总结来说,这个库存收发存报表汇总统计的数据库语句实现展示了如何利用SQL的联接、窗口函数以及递归查询等高级特性,有效地处理库存管理中的复杂业务逻辑。对于IT从业者来说,掌握这些技能不仅可以提高工作效率,还...
获取用友U8各版本BOM表的查询的Microsoft Server SQL语句,之前在网上找了很多,没有合适的,就自己写了一个。
根据提供的信息,我们可以了解到这里涉及的是通过SQL查询来统计仓库中的库存情况,即根据入库单和出库单来计算每种商品当前的库存数量。为了更好地理解和实现这一目标,我们将从以下几个方面进行深入探讨: ### ...
下面是一些经典且实用的 SQL Server 查询语句实例,涵盖了多种查询场景和技术。 1. 查找员工的编号、姓名、部门和出生日期 SELECT emp_no, emp_name, dept, ISNULL(CONVERT(CHAR(10), birthday, 120), '日期不详')...
实验要求通过联接订单主表(OrderMaster)和订单明细表(OrderDetail),根据订单明细表中的订单汇总金额更新订单主表的订单金额属性。此操作涉及到子查询和联接操作,具体SQL语句如下: ```sql UPDATE OrderMaster SET...
SQL视图是数据库管理中的一种重要工具,它允许我们将复杂的查询结果以虚拟表的形式存储,方便后续的数据分析和查询。在人事信息统计查询中,视图能够有效地简化操作,提高数据处理效率。 以文章中提到的实例为例,...
│ │ 3.7.3 text与ntext字段的复制和合并处理示例.sql │ │ 3.7.4 text与image字段转换处理示例.sql │ │ 3.7.5 ntext字段的REPLACE处理示例.sql │ │ │ └─其他 │ varbinary转换成字符串.sql │ 关键字搜索...
1. **数据库查询**:在这个系统中,用户可以按照年和月查询个人的工资明细。这通常需要一个后台数据库来存储员工的工资数据,如SQL Server、MySQL或Oracle等。查询功能通过SQL(结构化查询语言)实现,允许用户指定...
SQL(Structured Query Language)作为数据库管理系统的核心语言,为审计人员提供了强大的数据查询和分析能力。在学校审计领域,SQL的应用不仅提高了审计效率,还使得详细审查成为可能。通过将财务数据与相关业务...
具体来说,查询起始日期前的数据是从`ic_month_record`月发生表中计算,而起始日期到截止日期之间的数据则是从`ic_general_h`和`ic_general_b`出入库流水表中计算。发现3月份的数据在月发生表中缺失,这是导致不一致...
支持用友U8_12.5及以上 根据期初库存与出入库单据统计某日库存量 可实现通过批号或序列号统计,汇总
功能描述:PO待交明细、出入库统计表、待领料清单、请购中品号无单价的品号清单、请购单中无品号采购信息的品号清单 、物料采购分析表、物料呆滞料计算、应付-已付汇总表(已付款未扣除)、应付-已付汇总表(已付已...
这些SQL查询语句展示了在数据库管理和数据分析中常用的各种操作,主要涉及了选择(SELECT)、聚合(GROUP BY)、连接(JOIN)以及子查询等核心概念。下面是对这些查询语句的详细解析: 1. 这个查询展示了如何使用IS...
3.6.2 字符串在编号查询中的应用示例及常见问题.sql │ │ 3.6.3 动态参数的存储过程示例.sql │ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql │ │ 3.7.3 text与ntext字段的复制和合并...
SQL多表外连接查询是数据库操作中的一个重要知识点,它属于...在执行复杂的多表查询时,特别需要注意连接类型的选择、连接条件的设定、以及对结果集中NULL值的处理,从而确保查询结果的正确性和查询操作的高效性。
在该系统中,通过SQL语言实现的数据处理和查询功能是核心部分之一。SQL进销存算法主要关注如何利用SQL来计算某一时间段内的进货数量(进仓明细)、销售数量(出仓明细),以及基于这些数据计算当前的库存数量,并将...