一个 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值