`
alanland
  • 浏览: 642560 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

sql同时查询出明细和汇总

 
阅读更多

做报表(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。

 

 

分享到:
评论

相关推荐

    SQL联合统计查询

    2. 统计查询:统计查询通常涉及聚合函数,如COUNT、SUM、AVG、MAX和MIN,它们对一组值进行计算,返回一个单一的汇总结果。 3. 条件过滤:WHERE子句用于从数据集中筛选满足特定条件的行。在统计查询中,这可以用来按...

    如何在sqlserver中进行分类汇总-附件sql server 2005实例数据库和脚本

    小编对工作中遇到的用数据库语句进行分类汇总的查询信息的信息。压缩包中附件相关的数据库和 sql脚本。 详细的思路过程见博客:https://blog.csdn.net/aiming66/article/details/80717802

    20191108_13001-13003 贷款科目与总账汇总明细(核心系统).sql

    20191108_13001-13003 贷款科目与总账汇总明细(核心系统).sql

    库存收发存报表汇总统计数据库语句实现

    总结来说,这个库存收发存报表汇总统计的数据库语句实现展示了如何利用SQL的联接、窗口函数以及递归查询等高级特性,有效地处理库存管理中的复杂业务逻辑。对于IT从业者来说,掌握这些技能不仅可以提高工作效率,还...

    U8查询BOM.sql

    获取用友U8各版本BOM表的查询的Microsoft Server SQL语句,之前在网上找了很多,没有合适的,就自己写了一个。

    sql由入库单与出库单统计库存

    根据提供的信息,我们可以了解到这里涉及的是通过SQL查询来统计仓库中的库存情况,即根据入库单和出库单来计算每种商品当前的库存数量。为了更好地理解和实现这一目标,我们将从以下几个方面进行深入探讨: ### ...

    SQL server查询语句例子

    下面是一些经典且实用的 SQL Server 查询语句实例,涵盖了多种查询场景和技术。 1. 查找员工的编号、姓名、部门和出生日期 SELECT emp_no, emp_name, dept, ISNULL(CONVERT(CHAR(10), birthday, 120), '日期不详')...

    SQL数据库复杂查询

    实验要求通过联接订单主表(OrderMaster)和订单明细表(OrderDetail),根据订单明细表中的订单汇总金额更新订单主表的订单金额属性。此操作涉及到子查询和联接操作,具体SQL语句如下: ```sql UPDATE OrderMaster SET...

    巧用SQL视图实现人事信息统计查询.pdf

    SQL视图是数据库管理中的一种重要工具,它允许我们将复杂的查询结果以虚拟表的形式存储,方便后续的数据分析和查询。在人事信息统计查询中,视图能够有效地简化操作,提高数据处理效率。 以文章中提到的实例为例,...

    经典SQL脚本大全

    │ │ 3.7.3 text与ntext字段的复制和合并处理示例.sql │ │ 3.7.4 text与image字段转换处理示例.sql │ │ 3.7.5 ntext字段的REPLACE处理示例.sql │ │ │ └─其他 │ varbinary转换成字符串.sql │ 关键字搜索...

    按照年、月查询个人每个月的工资明细,汇总、打印、导出Excel功能

    1. **数据库查询**:在这个系统中,用户可以按照年和月查询个人的工资明细。这通常需要一个后台数据库来存储员工的工资数据,如SQL Server、MySQL或Oracle等。查询功能通过SQL(结构化查询语言)实现,允许用户指定...

    SQL查询语言在学校审计中的运用

    SQL(Structured Query Language)作为数据库管理系统的核心语言,为审计人员提供了强大的数据查询和分析能力。在学校审计领域,SQL的应用不仅提高了审计效率,还使得详细审查成为可能。通过将财务数据与相关业务...

    关于NC57核对存货明细账中库存期初数量与存货期初数量不一致问题分析及处理案例.docx

    具体来说,查询起始日期前的数据是从`ic_month_record`月发生表中计算,而起始日期到截止日期之间的数据则是从`ic_general_h`和`ic_general_b`出入库流水表中计算。发现3月份的数据在月发生表中缺失,这是导致不一致...

    用友U8_12.5按天统计库存 SQL语句

    支持用友U8_12.5及以上 根据期初库存与出入库单据统计某日库存量 可实现通过批号或序列号统计,汇总

    E10查用SQL语句集合E10查用SQL语句集合

    功能描述:PO待交明细、出入库统计表、待领料清单、请购中品号无单价的品号清单、请购单中无品号采购信息的品号清单 、物料采购分析表、物料呆滞料计算、应付-已付汇总表(已付款未扣除)、应付-已付汇总表(已付已...

    SQL经典查询语句精选.[归类].pdf

    这些SQL查询语句展示了在数据库管理和数据分析中常用的各种操作,主要涉及了选择(SELECT)、聚合(GROUP BY)、连接(JOIN)以及子查询等核心概念。下面是对这些查询语句的详细解析: 1. 这个查询展示了如何使用IS...

    Sqlserver2000经典脚本

    3.6.2 字符串在编号查询中的应用示例及常见问题.sql │ │ 3.6.3 动态参数的存储过程示例.sql │ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql │ │ 3.7.3 text与ntext字段的复制和合并...

    SQL多表外连接查询.pdf

    SQL多表外连接查询是数据库操作中的一个重要知识点,它属于...在执行复杂的多表查询时,特别需要注意连接类型的选择、连接条件的设定、以及对结果集中NULL值的处理,从而确保查询结果的正确性和查询操作的高效性。

    sql进销存算法

    在该系统中,通过SQL语言实现的数据处理和查询功能是核心部分之一。SQL进销存算法主要关注如何利用SQL来计算某一时间段内的进货数量(进仓明细)、销售数量(出仓明细),以及基于这些数据计算当前的库存数量,并将...

Global site tag (gtag.js) - Google Analytics