2

Prod_Oth_Id ||| Prod_Code ||||| Prod_Details |||||||||| 製品値 |

    1     | BR25MAON  | 4            | 9          |
    2     | BR25MAON  | 5            | 10         |
    3     | BR25MAON  | 6            | 11         |
    4     | BR25MABO  | 4            | 9          |
     5    | BR25MABO  | 5            | 10         |
     6    | BR25MABO  | 6            | 17         |
     7    | BR25GLON  | 4            | 9          |
        8 | BR25GLON  | 5            | 16         |
        9 | BR25GLON  | 6            | 11         |
       10 | BR25GLBO  | 4            | 9          |
       11 | BR25GLBO  | 5            | 16         |
       12 | BR25GLBO  | 6            | 17         |

たとえば、9、10、11 の 3 つの prod_value の組み合わせがあり、BR25MAON である上記の組み合わせの prodcode を取得したい

たとえば、9、16、17 を取得した場合、BR25GLBO であるこの組み合わせの prodcode を取得する必要があります。

4

2 に答える 2

2

一致するものと一致しないものをカウントできます。一致する Prod_Value が 3 つある場合、一致するものが 3 つ、一致しないものが 0 つあるはずです。

# 9, 10, 11

SELECT DISTINCT a.Prod_Code FROM MyTable a GROUP BY Prod_Code
HAVING SUM(a.Prod_Value NOT IN (9,10,11)) = 0               # <-- No non matches
   AND SUM(a.Prod_Value     IN (9,10,11)) = 3;              # <-- 3 matches

たとえば、一致していた場合(1,2)、クエリは次のように変更されます。

# 1, 2

SELECT DISTINCT a.Prod_Code FROM MyTable a GROUP BY Prod_Code
HAVING SUM(a.Prod_Value NOT IN (1,2)) = 0                   # <-- No non matches
   AND SUM(a.Prod_Value     IN (1,2)) = 2;                  # <-- 2 matches

SQLfiddle デモ

于 2012-09-29T06:34:46.953 に答える
0

異なる製品値の製品コードを取得したい場合は、単にこれを使用してください:

Select Distinct Prod_Code From TableName Where Prod_Value IN (9,10,11)

BR25GLBOのみを返します

他に何か必要な場合は、要件を詳細に説明してください。

于 2012-09-29T06:18:26.020 に答える