0

左結合を使用して 2 つのテーブルを結合しています。SOP10100とですSOP10106

2 つのテーブルを結合した後、2 つの請求書 (行) を取得する必要があります。現在、4 つの請求書 (行) を取得しています。

私の質問を見て、私が間違いを犯している場所を指摘してもらえますか?

Select
    DISTINCT DETAIL.SOPNUMBE as Invoice,
    DETAIL.DOCDATE as Date,
    DETAIL.CUSTNMBR as 'Customer Id',
    DETAIL.CUSTNAME as Customer_Name,
    DETAIL.SUBTOTAL as Sub_Total,
    DETAIL.FRTAMNT as Freight,
    DETAIL.TAXAMNT as Tax,
    DETAIL.DOCAMNT AS 'Doc_Amount',
    CASE when USRDEF05 <> ' ' THEN USRDEF05 ELSE '0'END as Winsys
FROM SOP10100 DETAIL 
Left JOIN SOP10106 USERDEF
ON USERDEF.soptype = DETAIL.soptype
WHERE BACHNUMB ='WINSYS112012'

ここに画像の説明を入力

4

1 に答える 1

1

soptype請求書テーブルの 2 つのレコードが一致しuserdefます。請求書ごとに、2 つの異なる があることがわかりますWinsys。請求書に関連付けたいのはどれですか? その質問に対する答えは、クエリのロジックに組み込む必要があります。

たとえば、必要になる場合がありMAX(Winsys)ます(あなたの場合はMAX(CASE ... END) as Winsys)。左結合の複数のレコードが選択元のテーブルと一致する場合に値を集計する方法を指定していない限り、すべての組み合わせを受け取ります。

GROUP BY適切な集計ができたら、請求書テーブルから選択しているフィールドも必要になります。

SOP10106同じsoptype. その場合は、それを修正するだけで、重複はなくなります。

于 2012-12-04T11:16:43.100 に答える