sql表连接问题

WITH A AS (

SELECT

CUSTOMER_NAME,

P_LEVEL_4_NAME,

PRODUCT_NAME,

PRODUCT_BATCH,

SUM(END_STD_INV_NM) BEN

FROM ADS_DRP_INVENTORY_LIST_H 

WHERE 1=1

AND MONTH_CODE = '202403'

AND CUSTOMER_NAME = '广州' 

AND F_CLASS in( '一级商业','二级商业')

AND P_LEVEL_3_NAME = 'A类'

GROUP BY 

CUSTOMER_NAME,

P_LEVEL_4_NAME,

PRODUCT_NAME,

PRODUCT_BATCH

),B AS(

SELECT

CUSTOMER_NAME,

P_LEVEL_4_NAME,

PRODUCT_NAME,

PRODUCT_BATCH,

SUM(END_STD_INV_NM) TONG

FROM ADS_DRP_INVENTORY_LIST_H 

WHERE 1=1

AND MONTH_CODE = '202503'

AND CUSTOMER_NAME = '广州' 

AND F_CLASS in( '一级商业','二级商业')

AND P_LEVEL_3_NAME = 'A类'

GROUP BY 

CUSTOMER_NAME,

P_LEVEL_4_NAME,

PRODUCT_NAME,

PRODUCT_BATCH

)

SELECT 

A.CUSTOMER_NAME,

A.PRODUCT_BATCH,

A.PRODUCT_NAME,

A.P_LEVEL_4_NAME,

A.BEN,

B.TONG

FROM A

FULL JOIN

B ON A.CUSTOMER_NAME = B.CUSTOMER_NAME

AND A.PRODUCT_BATCH = B.PRODUCT_BATCH

AND A.PRODUCT_NAME = B.PRODUCT_NAME

image.png数据问题没办法用左连接,所以用的full join但是求出来上面有一大片空值,能不能让这些空值显示自己原本的数据呀

SQL 嘘.. 发布于 2025-4-22 11:26
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
蒲公英FZLJLv5初级互助
发布于2025-4-23 09:44

如果A表中没有数据的要显示B表,就改成

SELECT NVL(A.CUSTOMER_NAME,B.CUSTOMER_NAME) CUSTOMER_NAME,NVL(A.PRODUCT_BATCH,B.PRODUCT_BATCHPRODUCT_BATCH... 类推

最佳回答
0
CovidLv3高级互助
发布于2025-4-22 11:27

什么是原本的数据?

你得先弄清楚什么是full join

最佳回答
0
shawnTaoLv3见习互助
发布于2025-4-22 16:10

FULL JOIN 是笛卡尔积,如果没法左连接,尝试把 LEFT  JOIN  前后的表置换下位置。

  • 3关注人数
  • 54浏览人数
  • 最后回答于:2025-4-23 09:44
    请选择关闭问题的原因
    确定 取消
    返回顶部