0

リフレッシュ可能なビュー/テーブルを作成できるように、次のテーブルを最も効率的に正規化する方法について、誰かがガイダンスを提供するのを手伝ってくれるかどうか疑問に思っていました.

表1:

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

このテーブルを繰り返し可能な方法で次のように正規化しようとしています。

結果:

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  

これは機能しているように見えましたが、複数のステージング テーブルを使用しなければならないという点で、非常に扱いにくいものでした。

これを達成できる良い方法があるかどうか誰にもわかりますか?

4

1 に答える 1

0

group by 句を使用してみてください

select id,order,order_status,
       case when system_ID = 'A' then system_actions as A_actions,
       case when system_ID = 'B' then system_actions as B_actions,
       case when system_ID = 'C' then system_actions as C_actions
from table1
group by id,order,order_status
于 2013-07-08T12:11:36.800 に答える