我有两个表,如stock_inward
,stock_outward
。我通过执行这样的连接操作得到了这个结果。
查询:
SELECT i.number, i.material_code, i.price, i.quantity, i.date, o.number, o.quantity, o.date, o.type
FROM `stock_outward` AS o
INNER JOIN `stock_inward` AS i ON `o`.material_code = `i`.material_code
AND `o`.material_code = '1000002'
LIMIT 0 , 30
结果:
number materialpricequantity date number quantity date type
OPENING 1000002 75 50 2014-09-17 TRN/1-2 10 2014-09-18 Non-Returnable
MRR/1-1 1000002 150 10 2014-09-17 TRN/1-2 10 2014-09-18 Non-Returnable
MRR/1-2 1000002 100 50 2014-09-17 TRN/1-2 10 2014-09-18 Non-Returnable
MRR/1-3 1000002 150 10 2014-09-18 TRN/1-2 10 2014-09-18 Non-Returnable
MRR/1-4 1000002 10 10 2014-09-18 TRN/1-2 10 2014-09-18 Non-Returnable
TRN/1-2 1000002 10 10 2014-09-18 TRN/1-2 10 2014-09-18 Non-Returnable
我的问题是我想在重复相同数字的地方显示null。我希望的o / p应该是这样的。
number materialpricequantity date number quantity date type
OPENING 1000002 75 50 2014-09-17 TRN/1-2 10 2014-09-18 Non-Returnable
MRR/1-1 1000002 150 10 2014-09-17 NULL NULL NULL NULL
MRR/1-2 1000002 100 50 2014-09-17 NULL NULL NULL NULL
MRR/1-3 1000002 150 10 2014-09-18 NULL NULL NULL NULL
MRR/1-4 1000002 10 10 2014-09-18 NULL NULL NULL NULL
TRN/1-2 1000002 10 10 2014-09-18 NULL NULL NULL NULL
是否可以在columns.how中重复返回null以获取所需的输出。我的问题中存在很多语法错误。但我希望你们理解我的意图。
答案 0 :(得分:0)
虽然我必须同意将这一点放在您的演示文稿中,但逻辑最有意义,有时可能不是一种选择。由于您正在使用MySql,因此您可以利用用户定义的变量:
SELECT i.number, i.material_code, i.price, i.quantity, i.date,
@number:=IF(@prevnumber=o.number,null,o.number) number,
@quantity:=IF(@prevquantity=o.quantity,null,o.quantity) quantity,
@date:=IF(@prevdate=o.date,null,o.date) date,
@type:=IF(@prevtype=o.type,null,o.type) type,
@prevnumber:=o.number,
@prevquantity:=o.quantity,
@prevdate:=o.date,
@prevtype:=o.type
FROM `stock_outward` AS o
INNER JOIN `stock_inward` AS i ON `o`.material_code = `i`.material_code
AND `o`.material_code = '1000002'
LIMIT 0 , 30