0

「HoldingQueue」というテーブルがあり、2 つの行を 2 つの値と比較し、それらの値の両方に一致しないすべての行を返したいと考えています。コンテンツの例を次に示します。

* * * * * * * * * * * *
* ItemCode * Channel  *
* * * * * * * * * * * *
* 1PX1     * Test     *
* * * * * * * * * * * *
* 2PX1     * Test     *
* * * * * * * * * * * *
* 3PX1     * Test2    *
* * * * * * * * * * * *

そしてクエリ:

SELECT * FROM HoldingQueue WHERE ItemCode<>"1PX1" AND Channel<>"Test";

これは、「3PX1 | Test2」のみを返します-「1PX1 | Test」ではないすべてを返すようにしたいので、「2PX1 | Test」も返す必要があります。

何か案は?ここで壁に頭をぶつけているようなものです。

編集:さて、ORを使用して小さなデータセットで作業しています...しかし、私が抱えている問題に気づきました。「ItemCode」と「Channel」をプルして、複数のエントリを持つ別のテーブルと比較しようとしていますが、そのテーブルには複数のエントリがあるため、すべてが少なくとも一度はどちらでもないと見なされることに気付きました値のセットの。

私の質問はこれよりも複雑だと思います。

編集#2:わかりました...

SELECT Channel, ItemCode FROM HoldingQueue H
WHERE NOT EXISTS
(SELECT * FROM SKUList S
    WHERE
        H.ItemCode=S.SKU
        AND
        H.Channel=S.Channel
) GROUP BY H.Channel,H.ItemCode;

2 番目の SKUList テーブルの WITH ANYTHING と一致しないアイテムが必要でした。これでできました。Sergey Kudriavtsev が私の最初の質問に正しく答えたので、答えをマークします (私が直面していた問題の多くを省きました)。

4

1 に答える 1

1

クエリでに変更ANDすると、次のようになりますOR

SELECT * FROM HoldingQueue WHERE ItemCode<>"1PX1" OR Channel<>"Test";
于 2012-10-24T15:17:11.870 に答える