我有一个req来根据ID Columns和Flag汇总金额。
我的意见: -
**ordr | item| amt|flg |dtl_item**
637262 1 98.58 Y 1
637262 2 1182.7 Y 1
637262 2 2365.4 Y 2
661209 1 0 Y 1
661209 1 960 N 1.1
661209 2 0 Y 1
661209 2 96 N 1.1
我的输出: -
**ordr | item| amt|flg |dtl_item**
637262 1 98.58 Y 1
637262 2 1182.7 Y 1
637262 2 2365.4 Y 2
661209 1 960 Y 1
661209 2 96 Y 1
1)我需要将amt
汇总到每个flg='Y'
的ordr,item and dtl_item
记录。
我尝试编写如下所示的查询并过滤掉flg ='N'记录,但它不能按预期工作。
select ordr,item, sum(amt), max(flg), dtl_num
group by ordr,item,dtl_num
任何帮助将不胜感激。
以下内容查找带有Y
标志的所有行,并为每个订单/项目添加带有N
标志的金额。如果订单/商品具有多个Y
标志行和一个或多个N
标志行,则无效。
select ty.ordr, ty.item,
coalesce(ty.amt,0) + coalesce(tn.amt,0) as amt,
ty.flag, ty.dtl_item
from
( select ordr, item, amt, flag, dtl_item
from test where flag = 'Y' ) ty
left join
( select ordr, item, sum(amt) as amt
from test where flag = 'N'
group by ordr, item) tn
on ty.ordr = tn.ordr and ty.item = tn.item
order by ty.ordr, ty.item