Интересно, может ли кто-нибудь помочь в предоставлении некоторых рекомендаций относительно того, как я мог бы наиболее эффективно нормализовать следующую таблицу, чтобы я мог создать обновляемый вид/таблицу.Нормализация таблицы в Oracle SQL
Table1:
SYSTEM_KEY | ID | ORDER | ORDER_STATUS | SYSTEM_Actions
A 1 Pencil Open Shipped
B 1 Pencil Open Tested
C 1 Pencil Open Shipped
A 1 Paper Closed Delivered
I'am ищет нормализовать эту таблицу в повторяемый способ что-то вроде этого:
РЕЗУЛЬТАТ:
ID | ORDER | Order Status | A_actions | B_Actions | C_Actions
1 Pencil OPEN Shipped Tested Delivered
1 Paper Closed Delivered null null
я смог достичь этого что-то похожее на это
Select full.ID, full.order, full.orderstatus, case when system_ID = 'A' then sysa.system_actions as A_actions, ....{for B, C}
from table1 full
left join table1 sysa on full.id = sysa.id and full.order = sysa.order
left join table1 sysb on full.id = sysb.id and full.order = sysb.order
Несмотря на то, что это работало, оно было довольно неуклюжим с точки зрения возможности повторного использования нескольких промежуточных столов.
Кто-нибудь знает, могу ли я достичь этого?
посмотреть PIVOT или модели, или SUM (CASE ...). вам нужно сотни примеров только в этом. – haki
Это не нормализация. На самом деле он даже менее нормализован, чем исходная таблица. – APC
Вы предлагаете DENORMALIZE таблицу, добавляя повторяющуюся группу действий. Может быть, вам стоит подумать об этом. Ваше предлагаемое изменение сделает таблицу труднее обработать, приведет к тому, что код будет обрабатывать ее более сложным и подверженным ошибкам, вызовет гнев богов на вашей голове и ваших потомков на семь поколений и, вероятно, вызовет конец мира, как мы его знаем. Удачи. –