MW211 EXIT

devlog
SQL/末端階層の前詰(1)
2015年07月05日
連番と親列のある表で、子列を前詰で作成したい場合(前詰にしたい場合)
┌──────┐  ┌──────┐
│連番  親  子│→│連番  親  子│
│----  --  --│  │----  --  --│
│   1   1   0│  │   1   1   1│
│   2   1   0│  │   2   1   2│
│   3   2   0│  │   3   2   1│
│   4   2   0│  │   4   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.連番;                                    │
└──────────────────────────────────────┘
分類:SQL