1

csvリストの2つのテーブルの請求書番号が必要なシナリオがあります。私は以下のようにスタッフを使用してこれを達成することができます:

SELECT
   sopnumbe
  ,custname 
  ,Invoices = 
        STUFF((SELECT DISTINCT ', '+ RTRIM(a.sopnumbe)+', '+ RTRIM(B.sopnumbe)
               FROM 
                  SOP10100  a
                  fULL OUTER JOIN 
                  SOP30200 B
                  ON a.ORIGNUMB =B.ORIGNUMB
               WHERE a.ORIGNUMB =@ordernumb
               FOR XML PATH('')) , 1 , 1 , '' )
FROM SOP10100
WHERE
    SOPNUMBE = @ordernumb

上記のクエリは、リスト内の繰り返しの請求書番号を除いて、正しい結果を生成します。これを達成する他の方法はありますか?


if the result of simple outer join query is:

INV1527157              INV1523836        
INV1527157              INV1526475  


スタッフクエリの結果:

K08081383206      BACHELOR CONTROLS INC    INV1527157, INV1523836, INV1527157, INV1526475

INV1527157が繰り返されます、繰り返しを取り除きたいです。

4

1 に答える 1

1

完全な外部結合ではなく、とUNIONからの結果を一緒に試してみることをお勧めします。AB

SELECT ', '+ RTRIM(sopnumbe)
FROM (SELECT sopnumbe FROM SOP10100 a WHERE a.ORIGNUMB = @ordernumb
      UNION
      SELECT sopnumbe FROM SOP30200 b WHERE b.ORIGNUMB = @ordernumb
) RESULT

これにより、両方のサブクエリからの個別の結果のみが返されます。

于 2012-05-24T21:23:42.137 に答える