1

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 

ありがとう、これを説明しようとして、何らかの意味があったことを願っています。

4

2 に答える 2

0

私には、2つのクエリをUNIONするようです。両方のクエリにフィールドを追加することもできます。これは、どのクエリが行を生成したかのマーカーとして、ある種のリテラル値です。

于 2012-11-26T03:26:38.610 に答える
0

このクエリは実行していませんが、これでうまくいくはずです。

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) AND M.PMATN IS NOT NULL) OR ((M.MATNR = A.MATNR) AND M.PMATN IS NULL))
WHERE A.MANDT = '510' 
AND A.VKORG = '1010'
AND A.VTWEG ='D1'
AND GETDATE() < A.DATBI
AND GETDATE() > A.DATAB 
于 2012-11-26T03:31:48.303 に答える