我在下面查询,而不是为同一BN创建多个条目(行),而应在具有FC,FM,MS值的同一行中创建条目。
select bspt.BN, FC, FM, MS from(select distinct(ozt.BRD_ID),
bp.NAME as BN,
os.OSS FC, '' FM, '' MS
from PR_BP ozt, PR_BP_BPP bp, BDD b, OS_VIEW os
where bp.BRD_ID = ozt.BRD_ID AND ozt.BRD_ID = os.OBJECT_ID and
os.OST = 'PR_BP_BPP' AND (ozt.BID = 10001)
and ozt.BID = b.BID AND ozt.BP_ACTIVE = 'Y'
UNION ALL
select distinct(ozt.BRD_ID),
bp.NAME as BN,
'' FC, os.OST FM, '' MS
from PR_BP ozt, PR_BP_BPP bp, BRAND b, OS_VIEW os
where bp.BRD_ID = ozt.BRD_ID AND ozt.BRD_ID = os.OBJECT_ID and
os.OST = 'PR_BP_BPP' AND (ozt.BID = 10002)
and ozt.BID = b.BID AND ozt.BP_ACTIVE = 'Y'
上面的查询正在为BNAME列生成带有多个条目的输出。因此,与其创建单独的条目,不如为常见的BNAME只创建一行。
所有这些都可以通过一个条件聚集查询来完成。
select bp.NAME as BIZNAME,
max(case when bbp.BRAND_ID = 10001 then os.OBJECT_STATUS end) FC,
max(case when bbp.BRAND_ID = 10002 then os.OBJECT_STATUS end) FM,
max(case when bbp.BRAND_ID = 10007 then os.OBJECT_STATUS end) MS
from PR_BP bbp
JOIN PR_BP_BPP bp ON bp.BP_ID = bbp.BP_ID
JOIN BRAND b ON bbp.BRAND_ID = b.BRAND_ID
JOIN OS_VIEW os ON bbp.BP_ID = os.OBJECT_ID
where os.OBJECT_TYPE = 'PR_BP_BPP' AND bbp.BP_ACTIVE = 'Y'
group by bp.NAME
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句