需要支持构建SQL查询

时间:2017-05-01 09:06:26

标签: sql

如果用户订购的商品具有数量(长度)> 6,我们检查是否有文章< stpPicklistItems中的6个(也可以来自其他客户)。

如果没有文章> 6使用机器A(小机器)。但如果有文章> 6,机器B用于物品>并且还< 6(两台大机器)

此表格中的每一行都是来自不同客户的订单。 ID 02是7米织物的订单。这种织物在机器B上切割(> 6米) 在机器A上切割较小的长度。但是如果有订单>每个6米 在机器B上切割订单。否则我们必须在两台不同的机器上切割相同的物品。

我试过了:

SELECT EanUpc, Qty,
IF(a.Qty > 6, 'B','A') as Machine
FROM stpPicklistItems a

WHERE a.EanUpc IN (
SELECT DISTINCT EanUpc

FROM stpPicklistItems a2 
WHERE a2.Qty > 6
AND EanUpc = '2000000312040'
)

enter query Result

因为有订单> 6米标志“机器”应显示B.如果< 6并且没有订单> 6它应该是'A'。

我正在使用MySQL

2 个答案:

答案 0 :(得分:1)

像这样;

SELECT *
FROM [Articles] a
WHERE a.ArticleNumber IN (
    SELECT DISTINCT ArticleNumber 
    FROM [Articles] a2 
    WHERE a2.Qty > 6
)

编辑:仍在猜测,因为您没有提供样本数据或预期结果数据集,但您可以尝试这样做;

SELECT DISTINCT 
    EanUpc,
    CASE WHEN (SELECT Count(*) 
               FROM [Articles] a2 
               WHERE a2.EanUpc = a.EanUpc 
               AND a2.Qty > 6) >= 1 
    THEN 'B' ELSE 'A' AS Machine
FROM [Articles] a

答案 1 :(得分:0)

这是工作解决方案,它进行了分类。

SELECT DISTINCT 
a.EanUpc, a.ItemName, a.Qty,
CASE 
WHEN (SELECT count(*) 
        FROM stpPicklistItems a2 
        WHERE a2.EanUpc = a.EanUpc 
        AND a2.Qty > 6) >= 1 
THEN 'B'
ELSE 'A' 
END AS Machine
FROM stpPicklistItems a
ORDER BY a.EanUpc DESC