• 一个 SQL 分段排序的问题(也可以理解为 段内汇总排序问题)


    我现有一表名为: product1,字段内容如下:
    productID productName price num
    101        商品1    2.15 2
    112        商品2    5.5    5
    203        商品3    4.15 8
    101        商品1    2.15 5

    一个表为product2,字段内容如下:
    code        name    fyprice fynum
    110        物品1    5    2
    123        物品2    4    5
    241        物品3    8    8
    110        物品1    5    5

    我现在要求在报表中显示打印为
    产品号 产品名 单价    数量    小计
    101    商品1    2.15    7        15.05
    112    商品2    5.5    5        27.5
    203    商品3    4.15    8        33.2
    110    物品1    5    7        35
    123    物品2    4    5        20
    241    物品3    8    8        64
    意思也就是,希望用了UNION进行合并后记录排序能做到product1的记录在一起并按productID 排序,然后是product2的记录在一起,并按code排序。

    SELECT 0, productID AS 产品号, productName AS 产品名, price AS 单价, SUM(num) AS 数量,
        price * SUM(num) AS 小计
    FROM product1
    GROUP BY productID, productName, price
    UNION
    SELECT 1, code AS 产品号, name AS 产品名, fyprice AS 单价, SUM(fynum) AS 数量,
        fyprice * SUM(fynum) AS 小计
    FROM product2
    GROUP BY code, name, fyprice

    语句的妙处就在于   union select的时候  手工添加 0 和 1 这一列数字 使得两段分开了,而不是单纯去按照  code 大小排序了。 大家可以尝试下。

    可随意转载,欢迎署名!
  • 相关阅读:
    HTML5印章绘制电子签章图片,中文英文椭圆章、中文英文椭圆印章
    送别2019,期待2020!
    [系列] Go
    当查询的数据来自多个数据源,有哪些好的分页策略?
    究竟什么样的开发流程是规范的?
    Git 分支设计规范
    API 接口设计规范
    一线技术管理者究竟在管什么事?
    一个人被提拔,不仅仅是能力,而是信任
    [系列] Go 如何解析 JSON 数据?
  • 原文地址:https://www.cnblogs.com/netsa/p/2514873.html
Copyright © 2020-2023  润新知