MW211 EXIT

devlog
SQL/末端階層の前詰(2)
2015年07月06日
親列と子列のある表で、子列を前詰で作成したい場合(前詰にしたい場合)
┌───┐  ┌───┐
│親  子│→│親  子│
│--  --│  │--  --│
│ 1   3│  │ 1   1│
│ 1   4│  │ 1   2│
│ 2   6│  │ 2   1│
│ 2   8│  │ 2   2│
└───┘  └───┘
┌──────────────────────────────────────┐
│UPDATE 表                                                                   │
│    SET 子列 = 入力D.新子列                                                │
│    FROM 表 AS 出力D                                                       │
│        INNER JOIN (                                                        │
│            SELECT 親列,                                                    │
│                   子列,                                                    │
│                   RANK() OVER(                                             │
│                       PARTITION BY 親列                                    │
│                       ORDER BY 子列 ASC                                    │
│                   ) AS 新子列                                              │
│                FROM 表                                                     │
│        ) AS 入力D                                                         │
│          ON  入力D.親列 = 出力D.親列                                     │
│          AND 入力D.子列 = 出力D.子列;                                    │
└──────────────────────────────────────┘
分類:SQL