如果用户订购的商品具有数量(长度)> 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'
)
因为有订单> 6米标志“机器”应显示B.如果< 6并且没有订单> 6它应该是'A'。
我正在使用MySQL
答案 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