2

Prod_Oth_Id ||| 产品代码 ||||| 产品详情 |||||||||| 产品价值 |

    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         |

我有 3 个 prod_value 的组合,例如 9、10、11,我想检索上述组合的产品代码,即 BR25MAON

例如,如果我得到 9、16、17,那么我必须检索此组合的产品代码,即 BR25GLBO

4

2 回答 2

2

您可以计算匹配和不匹配,如果有 3 个 Prod_Values 要匹配,则应该有 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 回答