Учитывая приведенную ниже таблицу, я хочу получить историю изменений для двух столбцов price
и qty
для каждого значения fruit
. Я использую MS SQL Server 2012.Отслеживание изменений данных для каждого столбца таблицы в T-SQL
Так, например:
- изменение между рядами 1 и 3 в том, что цены на яблоки пошли от 10 до 30, что дает строку 1 в таблице результатов ниже.
- изменение между строками 2 и 4 состояло в том, что цена бананов составляла от 20 до 30 , а количество было от 2 до 3, что дает строки 2 и 3 в таблице результатов .
Есть ли способ сделать это? Есть ли способ сделать это эффективно?
Источник таблица таблица
+----+---------+--------+--------+---------+
| id | fruit | price | qty | created |
+----+---------+--------+--------+---------+
| 1 | apples | 10 | 1 | 1/1/16 |
+----+---------+--------+--------+---------+
| 2 | bananas | 20 | 2 | 1/1/16 |
+----+---------+--------+--------+---------+
| 3 | apples | 30 | 1 | 2/1/16 |
+----+---------+--------+--------+---------+
| 4 | bananas | 30 | 3 | 2/1/16 |
+----+---------+--------+--------+---------+
| 5 | apples | 30 | 2 | 3/1/16 |
+----+---------+--------+--------+---------+
| 6 | apples | 30 | 3 | 7/1/16 |
+----+---------+--------+--------+---------+
Результаты
+----+----+--------+--------+--------+---------+
| id | fk | col | oldval | newval | changed |
+----+----+--------+--------+--------+---------+
| 1 | 3 | price | 10 | 30 | 2/1/16 |
+----+----+--------+--------+--------+---------+
| 2 | 4 | price | 20 | 30 | 2/1/16 |
+----+----+--------+--------+--------+---------+
| 3 | 4 | qty | 2 | 3 | 2/1/16 |
+----+----+--------+--------+--------+---------+
| 4 | 5 | qty | 1 | 2 | 3/1/16 |
+----+----+--------+--------+--------+---------+
| 5 | 6 | qty | 2 | 3 | 7/1/16 |
+----+----+--------+--------+--------+---------+
Как это работает? – rickythefox
@ rickythefox Вы можете попробовать оба решения до сих пор и рассказать нам, как они работают с вашими фактическими данными. –