0

結合できる 2 つのテーブル A={a,b} と B={0,1,2} があるとします。

tableA  tableB
a       0
b       1
a       2
        3

次の結果 ExpectingResult を取得する方法:

tableA  tableB
a-------0
b-------1
null----2
null----3

また

   tableA   tableB
    a-------2
    b-------3
    null----0
    null----1

各テーブルの要素が一度だけ表示されることを確認してください。すべての種類の結合(内部、完全、クロス)を試しましたが、どれもそれを達成できません。誰かヒントをくれませんか?

どうもありがとうございました

質問自体へのリンクをチェックしてください: http://www.sqlfiddle.com/#!3/9fc21/2

4

2 に答える 2

0

それくだらない要求です。私が正気の理由を完全に排除しているわけではありませんが、頭に浮かぶそのような出力を生成する理由はほとんど無視できます。

SQL Server 2000の場合、一時テーブルを調べて、圧縮するシーケンシャルキーを取得する必要があります。

  SELECT IDENTITY(int,1,1) ID, Value
    INTO #tblA
    FROM tableA
ORDER BY Value;

  SELECT IDENTITY(int,1,1) ID, Value
    INTO #tblB
    FROM tableB
ORDER BY Value;

  SELECT A.Value, B.Value
    FROM #tblA A FULL OUTER JOIN #tblB B ON A.ID = B.ID
ORDER BY Coalesce(A.ID, B.ID);
于 2012-12-04T06:13:40.647 に答える
0

を使用すると、とSQL Server 2005の組み合わせを使用して、両方の結果を組み合わせることができます。ROW_NUMBERFULL OUTER JOIN

SQLフィドルを参照してください

残念ながら、関数SQL Server 2000がないROW_NUMBERため、行番号をシミュレートするためにIDフィールドを持つ一時テーブルを使用することに固執しています。

これの要点は

  • tableAから#tempTableAに必要なデータを選択し、IDフィールドを追加します。
  • tableBに対して繰り返します
  • FULL OUTER JOIN結果に誘惑を使用する
于 2012-12-04T06:14:11.377 に答える