У меня есть такой стол. Таблица заполняется каждый раз, когда заказ выполнен. В одном заказе может быть одно или несколько отделений.
+---------+-------+-------------+------+
| OrderID | Plant | Compartment | Qty |
+---------+-------+-------------+------+
| 91 | 12 | 1 | 2000 |
| 91 | 12 | 2 | 2000 |
| 91 | 12 | 3 | 2000 |
| 90 | 12 | 1 | 3000 |
| 89 | 12 | 1 | 5000 |
+---------+-------+-------------+------+
Помогите, пожалуйста, написать скрипт SQL, который берет вышеприведенное и разбивает его на две новые таблицы, например:
Таблица 1
+---------+-------+
| OrderID | Plant |
+---------+-------+
| 91 | 12 |
| 90 | 12 |
| 89 | 12 |
+---------+-------+
Таблица 2
+---------+-------------+------+
| OrderID | Compartment | Qty |
+---------+-------------+------+
| 91 | 1 | 2000 |
| 91 | 2 | 2000 |
| 91 | 3 | 2000 |
| 90 | 1 | 3000 |
| 89 | 1 | 5000 |
+---------+-------------+------+
Я пытался использовать команду DISTINCT, как предложено;
SELECT * FROM table
WHERE [OrderID] = (SELECT DISTINCT OrderID from table where (COMPARTMENT = '1'))
, которая возвращает ошибку;
Подзапрос вернул более 1 значение. Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения.
Если скрипт может отслеживать уже обработанные строки, чтобы чтобы избежать дублирования при каждом запуске, это было бы обледенением на торте.