Interbase SQL重做Select查询

主权太阳

我需要你帮忙。

我有一个Interbase SQL Select查询:

选择aps.fullname,aps.productvcode,aps.alccode,aps.capacity,Cast(Round(Sum(wp.capacity> 0的情况,然后wp.quantity * wp.capacity / 10否则wp.quantity * wp.capacity end) ,4)作为DECIMAL(18,4))作为AP aps的WBTotal左加入wp.alccode = aps.alccode上的Waybill_positions wp,其中wp.alccode ='0001821000001389010'由aps.fullname,aps.productvcode,aps.alccode, aps.capacity
union all
选择aps.fullname,aps.productvcode,aps.alccode,aps.capacity,Cast(Round(Sum(wp.capacity> 0然后wp.quantity * wp.capacity / 10否则wp.quantity * wp.​​capacity end),4)as DECIMAL(18,4))as WBTotal来自AP aps左加入wb.alccode = aps.alccode上的Waybill_out_positions wp,其中wp.alccode ='0001821000001389010'由aps.fullname,aps.productvcode组,aps.alccode,aps.capacity

它给了我这个: 在此处输入图片说明

但是我希望第二行的值“ 156,9750”“ WBTOTAL”旁边右侧的单独列,并具有标题“ WBOTOTAL”

怎么做?

金晃

您可以使用CTE,如下所示

with CTE1 as
(
    Select aps.fullname, aps.productvcode, aps.alccode, aps.capacity, Cast(Round(Sum(case when wp.capacity>0 then wp.quantity * wp.capacity/10 else wp.quantity * wp.capacity end),4) as DECIMAL(18,4)) as WBTotal from AP aps left join Waybill_positions wp on wp.alccode=aps.alccode where wp.alccode='0001821000001389010' group by aps.fullname, aps.productvcode, aps.alccode, aps.capacity
),
CTE2 as
(
    Select aps.fullname, aps.productvcode, aps.alccode, aps.capacity, Cast(Round(Sum(case when wp.capacity>0 then wp.quantity * wp.capacity/10 else wp.quantity * wp.capacity end),4) as DECIMAL(18,4)) as WBTotal from AP aps left join Waybill_out_positions wp on wp.alccode=aps.alccode where wp.alccode='0001821000001389010' group by aps.fullname, aps.productvcode, aps.alccode, aps.capacity
)
Select CTE1.fullname, CTE1.productvcode, CTE1.alccode, CTE1.capacity, CTE1.WBTotal, CTE2.WBTotal as WBOTOTAL
From  CTE1 
join  CTE2
on CTE1.productvcode = CTE2.productvcode
and CTE1.alccode = CTE2.alccode

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章