一个 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 大小排序了。 大家可以尝试下。
本文来自博客园,作者:忙碌在路上,转载请注明原文链接:https://www.cnblogs.com/netsa/archive/2012/05/23/2514873.html