我有一个看起来像这样的桌子
Time Master_Price Discounted_price1 Discounted_qty1 Discounted_price2 Discounted_qty2 Discounted_price3 Discounted_qty3
1552279758 100 90 5 80 10 70 15
1552279759 200 195 6 185 7 80 12
1552279760 300 285 11 200 9 150 7
1552279761 400 300 20 250 25 220 30
1552279763 500 400 30 350 5 300 8
1552279766 500 400 NULL 350 9 300 9
“时间”列是唯一的,采用Unix格式。
要求是在Master_Price列上使用算术运算,并检查与之匹配的Discounted Price,并返回相应的Discounted Qty。
假设Master_Price为100,而我输入Master_Price-20,则应返回值12(在第二行中显示)或整行。 如果Master_Price为200,而我输入Master_Price-50,则应返回值7(出现在第三行)或整行,依此类推。 如果Master_Price为500,而我输入Master_Price-100,则它应返回30或整行,而不是包含NULL的行
输入要从Master_Price中减去的整数的选项应在查询中。即使是硬编码也可以
答案 0 :(得分:0)
请参阅上面的评论,但我认为此查询应该有效:
(如果找不到,则不会获得整行。)
select @MP := 500;
select @DISCOUNT := 100;
select
CASE
WHEN Discounted_price1 = Master_Price - @DISCOUNT THEN Discounted_qty1
WHEN Discounted_price2 = Master_Price - @DISCOUNT THEN Discounted_qty2
WHEN Discounted_price3 = Master_Price - @DISCOUNT THEN Discounted_qty3
ELSE 'None'
END as qty
from prices where Master_Price = @MP and ((Discounted_price1 = Master_Price - @DISCOUNT and Discounted_qty1 >=0) or (Discounted_price2 = Master_Price - @DISCOUNT and Discounted_qty2 >=0) or (Discounted_price3 = Master_Price - @DISCOUNT and Discounted_qty3 >=0));
我做了一个小提琴来演示/玩它。 http://sqlfiddle.com/#!9/0166cc/16