Я пытаюсь создать select для ожидаемого результата, но будут установлены некоторые операторы для игнорируемой строки, которая была изменена:
SELECT col1, col2, done_at, SUM(qty) FROM (
SELECT col1, col2, done_at, qty, 0 AS semiline
FROM test WHERE 1
UNION ALL
SELECT test1.col2 AS col1, test1.col1 AS col2, test1.done_at, test1.qty, 1 AS semiline
FROM test AS test1
JOIN test AS test2 ON test1.col2=test2.col1
WHERE 1 GROUP BY test1.col2, test1.col1, test1.done_at
) AS result WHERE 1
GROUP BY col1, done_at;
+------+------+------------+----------+
| col1 | col2 | done_at | SUM(qty) |
+------+------+------------+----------+
| ABC | XYZ | 2017-12-29 | 2 | <-- this row is bad, i think...
| XYZ | 123 | 2017-12-29 | 3 |
| XYZ | 123 | 2018-10-04 | 7 |
+------+------+------------+----------+