我正在尝试使用 SQL 查找 SAP 中文章的零售价,但文章的性质意味着当前价格可以针对父母或孩子。判断我需要加入哪个字段的唯一方法是某个字段是否包含值。
我有 2 个单独的查询,但我确实需要 1 个结果集中的结果。
MATNR 是文章编号,而 M.PMATN 是父母文章编号。如果 M.PMATN 字段为空,那么我想像 M.MATNR = A.MATNR 上的查询 #1 一样加入,但如果 M.PMATN 不为空,那么我想使用该字段中的值作为 M. PMATN = A.MATNR
查询 #1- 不存在父文章编号,因此使用文章编号 = 文章编号从文章本身获取价格:
SELECT A.MANDT, A.VKORG, A.VTWEG, A.MATNR, M.PMATN, K.KBETR, A.DATAB, A.DATBI FROM pdp.KONP AS K
INNER JOIN pdp.A073 AS A ON
A.KNUMH = K.KNUMH
INNER JOIN pdp.MVKE AS M ON
M.VKORG = M.VKORG
AND M.VTWEG = A.VTWEG AND M.MATNR = A.MATNR
WHERE A.MANDT = '510'
AND A.VKORG = '1010'
AND A.VTWEG ='D1'
AND GETDATE() < A.DATBI
AND GETDATE() > A.DATAB
AND M.PMATN = ''
查询 #2 - 字段中存在父文章编号,因此将其与文章连接以从父文章中查找价格:
SELECT distinct A.MANDT, A.VKORG, A.VTWEG, A.MATNR, M.PMATN, K.KBETR, A.DATAB, A.DATBI FROM pdp.KONP AS K
INNER JOIN pdp.A073 AS A ON
A.KNUMH = K.KNUMH
INNER JOIN pdp.MVKE AS M ON
M.VKORG = M.VKORG
AND M.VTWEG = A.VTWEG AND M.PMATN = A.MATNR
WHERE A.MANDT = '510'
AND A.VKORG = '1010'
AND A.VTWEG ='D1'
AND GETDATE() < A.DATBI
AND GETDATE() > A.DATAB
谢谢,我希望我试图解释这一点有某种意义。