Mysql查询编号组行。

我找了好几天,想找一个能显示组行紧凑连续编号的方法。产品在纸箱中可以是单一类型的,也可以混合在一起。有些纸箱的标记已经打印好了,所以我不能重新排列纸箱的标记。我有这样的表格。

+-----+------------+--------+-----------+
| qty | product_id |  Type  | carton_no |
+-----+------------+--------+-----------+
|  18 |        111 | single |         1 |
|  18 |        111 | single |         2 |
|  18 |        111 | single |         3 |
|  48 |        115 | single |         4 |
|  48 |        115 | single |         5 |
|  48 |        115 | single |         6 |
|  36 |        119 | single |         7 |
|  36 |        119 | single |         8 |
|  18 |        111 | single |         9 |
|  36 |        119 | single |        10 |
|  16 |        199 | single |        11 |
|  16 |        199 | single |        12 |
|   4 |        111 | mix    |        13 |
|   4 |        115 | mix    |        13 |
|   4 |        119 | mix    |        13 |
|   4 |        199 | mix    |        13 |
+-----+------------+--------+-----------+

单据处理器需要这样的视图

+-----------+-----+------------+--------+
| Numbering | QTY | product_id |  Type  |
+-----------+-----+------------+--------+
| 1-4       |  72 |        111 | single |
| 5-7       | 144 |        115 | single |
| 8-10      | 108 |        119 | single |
| 11-12     |  32 |        199 | single |
| 13        |   4 |        111 | mix    |
| 13        |   4 |        115 | mix    |
| 13        |   4 |        119 | mix    |
| 13        |   4 |        199 | mix    |
+-----------+-----+------------+--------+

编号实际上是对每个产品的总纸箱数进行统计 按类型,产品_id ASC排序。有什么办法吗?

解决方案:

WITH 
cte1 AS ( 
    SELECT qty, 
           product_id, 
           Type, 
           carton_no,
           CASE WHEN product_id = LAG(product_id) OVER (ORDER BY carton_no)
                THEN 0
                ELSE 1
                END new_group
    FROM src ),
cte2 AS (
    SELECT qty, 
           product_id, 
           Type, 
           carton_no,
           SUM(new_group) OVER (ORDER BY carton_no) group_num
    FROM cte1
)
SELECT CASE WHEN MAX(carton_no) > MIN(carton_no)
            THEN CONCAT(MIN(carton_no), '-', MAX(carton_no))
            ELSE MIN(carton_no)
            END Numbering ,
       SUM(qty) QTY,
       product_id,
       ANY_VALUE(Type) Type
FROM cte2
GROUP BY group_num, product_id;

摆弄

给TA打赏
共{{data.count}}人
人已打赏
未分类

在Xcode中有没有简单的方法可以去除结尾的完成块?

2022-9-9 1:39:18

未分类

在Django RestFramework中,Router没有显示正确的URL?

2022-9-9 1:39:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索