包裹表x_tm_package
包裹id 包裹号
001 12562
002 44444
包裹明细表x_tm_package_detail
包裹明细id 包裹id 退换数量 换货数量 拒收数量 数量
1111 001 1 1 1 4
1112 002 1 1 0 4
1113 002 1 0 1 2select *from (select pack.package_id,
pack.PACKAGE_NUMBER,
pack.order_id,
packde.return_quantity,
packde.EXCHANGE_QUANTITY,
packde.REJECTION_QUANTITY
from X_TM_PACKAGE pack
left join x_tm_package_detail packde on pack.package_id =
packde.package_id
order by pack.package_id) BTA
执行该sql的显示结果为:
包裹id 包裹明细id 包裹号 退换数量 换货数量 拒收数量 数量
001 1111 12562 1 1 1 4
002 1112 44444 1 1 0 4
002 1113 44444 1 0 1 2
现在要求每一条单据只要退换数量>0显示为一行,换换数量>0显示为一行,拒收数量>0显示为一行,数量-退换数量-换货数量-拒收数量>0显示为一行
需要显示结果为:
包裹id 包裹明细id 包裹号 售后状态
001 1111 12562 退货
001 1111 12562 换货
001 1111 12562 拒收
001 1111 12562 正常
002 1112 44444 退货
002 1112 44444 换货
002 1112 44444 正常
002 1113 44444 退货
002 1113 44444 拒收
包裹id 包裹号
001 12562
002 44444
包裹明细表x_tm_package_detail
包裹明细id 包裹id 退换数量 换货数量 拒收数量 数量
1111 001 1 1 1 4
1112 002 1 1 0 4
1113 002 1 0 1 2select *from (select pack.package_id,
pack.PACKAGE_NUMBER,
pack.order_id,
packde.return_quantity,
packde.EXCHANGE_QUANTITY,
packde.REJECTION_QUANTITY
from X_TM_PACKAGE pack
left join x_tm_package_detail packde on pack.package_id =
packde.package_id
order by pack.package_id) BTA
执行该sql的显示结果为:
包裹id 包裹明细id 包裹号 退换数量 换货数量 拒收数量 数量
001 1111 12562 1 1 1 4
002 1112 44444 1 1 0 4
002 1113 44444 1 0 1 2
现在要求每一条单据只要退换数量>0显示为一行,换换数量>0显示为一行,拒收数量>0显示为一行,数量-退换数量-换货数量-拒收数量>0显示为一行
需要显示结果为:
包裹id 包裹明细id 包裹号 售后状态
001 1111 12562 退货
001 1111 12562 换货
001 1111 12562 拒收
001 1111 12562 正常
002 1112 44444 退货
002 1112 44444 换货
002 1112 44444 正常
002 1113 44444 退货
002 1113 44444 拒收
select b.包裹id,b.包裹明细id,a.包裹号,'退换' 售后状态
from x_tm_package a join x_tm_package_detail b on a.包裹id = b.包裹id
where 退换数量 <> 0
union all
select b.包裹id,b.包裹明细id,a.包裹号,'换货' 售后状态
from x_tm_package a join x_tm_package_detail b on a.包裹id = b.包裹id
where 换货数量 <> 0
union all
select b.包裹id,b.包裹明细id,a.包裹号,'拒收' 售后状态
from x_tm_package a join x_tm_package_detail b on a.包裹id = b.包裹id
where 拒收数量 <> 0
union all
select b.包裹id,b.包裹明细id,a.包裹号,'正常' 售后状态
from x_tm_package a join x_tm_package_detail b on a.包裹id = b.包裹id
where 数量 <> 0
order by 包裹id,包裹明细id
DECLARE @PRO TABLE(NAMEP NVARCHAR(8))再与你的查询语句 CASE NAMEP WHEN '退货' THEN 退换数量 WHEN ...THEN (SQL) CROSS JOIN @PROWHERE
declare @Tb table(package_number varchar(20),order_id varchar(20),return_quantity int,exchange_quantity int,rejection_quantity int)
insert into @tb
select pack.package_id, pack.PACKAGE_NUMBER, pack.order_id,packde.return_quantity,packde.EXCHANGE_QUANTITY,packde.REJECTION_QUANTITY
from X_TM_PACKAGE pack
left join x_tm_package_detail packde on pack.package_id = packde.package_id
order by pack.package_id) BTAselect package_number,PACKAGE_NUMBER,order_id,'退货' as 销售状态 where return_quantity>0
union all
select package_number,PACKAGE_NUMBER,order_id,'拒收' as 销售状态 where REJECTION_QUANTITY>0
union all
select package_number,PACKAGE_NUMBER,order_id,'正常' as 销售状态 where X_TM_PACKAGE-return_quantity-EXCHANGE_QUANTITY-REJECTION_QUANTITY>0