SELECT DISTINCT * FROM (
SELECT AA.BUSINESS_TYPE
,BB.KBN_NAME AS BUSINESS_TYPE_NAME
FROM H001_TRANSPORT AA
LEFT JOIN M901_KBN BB
ON AA.BUSINESS_TYPE=BB.KBN_CD
WHERE AA.COMPANY_CD='00001'
AND BB.NAME_KBN_CD='22'
) B结果如下(结果一):
BUSINESS_TYPE BUSINESS_TYPE_NAME
2 内贸
3 导箱
1 出口SELECT A.BUSINESS_TYPE
,A.GOODS_MNG_ID
FROM H001_TRANSPORT A 结果如下(结果二):
BUSINESS_TYPE GOODS_MNG_ID
1 aa02bb
1 aa0499bb
1 aa0505bb
1 aa04bb
1 aa05bb
1 aa0504bb
1 aa0500bb
1 aa0501bb
1 aa0502bb
1 aa0503bb
1 aa06bb
2 aa03bb
2 aa0495bb
3 aa0497bb
3 aa01bb
我想的是A表和B表关联一下,显示结果是BUSINESS_TYPE、BUSINESS_TYPE_NAME、GOODS_MNG_ID三列
但是B表是我关联查询出来的虚拟的表 所以不知道怎么去写 所以请大家帮下忙 我用的是Oracle数据库
先谢过大家了……
goods_mng_id
FROM h001_transport aa LEFT JOIN m901_kbn bb
ON aa.business_type = bb.kbn_cd
WHERE aa.company_cd = '00001' AND bb.name_kbn_cd = '22'是想要这个结果吗?
不过问题我问错了
结果如下(结果二):
BUSINESS_TYPE GOODS_MNG_ID
1 aa02bb
1 aa0499bb
1 aa0505bb
1 aa04bb
1 aa05bb
1 aa0504bb
1 aa0500bb
1 aa0501bb
1 aa0502bb
1 aa0503bb
1 aa06bb
2 aa03bb
2 aa0495bb
null aa0497bb
null aa01bb 有两个null值的,查询的时候就排除掉了
需要的话,1楼的语句应该没问题的。不需要的话 你where限制下
问题解决SELECT DISTINCT * FROM (
SELECT AA.BUSINESS_TYPE
,BB.KBN_NAME AS BUSINESS_TYPE_NAME
FROM H001_TRANSPORT AA
LEFT JOIN M901_KBN BB
ON AA.BUSINESS_TYPE=BB.KBN_CD
WHERE AA.COMPANY_CD='00001'
AND BB.NAME_KBN_CD='22'
) B
--在
LEFT JOIN M901_KBN BB
ON AA.BUSINESS_TYPE=BB.KBN_CD
--的时候 可已And 将Where条件中的AND BB.NAME_KBN_CD='22' 提到ON 后面
--这样就不用WHERE 去过滤了 数据就会保留了