`
alanland
  • 浏览: 641492 次
  • 性别: 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从业者来说,掌握这些技能不仅可以提高工作效率,还...

    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的应用不仅提高了审计效率,还使得详细审查成为可能。通过将财务数据与相关业务...

    用友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来计算某一时间段内的进货数量(进仓明细)、销售数量(出仓明细),以及基于这些数据计算当前的库存数量,并将...

    预算执行审计中的计算机审计思路和SQL语句运用.pdf

    通过SQL语句,可以实现对相关数据的分组、汇总和条件查询,帮助审计人员快速找到未拨出款项或未按要求落实的配套资金。 预算结余及结转情况审计则是检查预算执行完毕后,预算结余的处理是否符合规定,结余资金是否...

    里诺仓库管理软件(SQL网络版)601破解版

    库存管理:(包括查询、库存明细、库存汇总、分仓汇总、库存报警)可以对当前库存进行查询,也可以对滞销、畅销货品的查询。查询时可以根据多种条件组合查询货品记录,可通过EXCEL表导出数据,并可以打印出历史数据...

Global site tag (gtag.js) - Google Analytics