■以下のようなテーブルを列持ち→行持ちの値に変換した後、「employee」列を氏名順にソートする。
※SQLサーバはフリガナのない漢字に対してはきれいにソートはかからないことが多い。
そのため、漢字にソートをかけるためには「フリガナ列」を設けてフリガナ列でソートするしかない。
出力結果にソート用の列を表示させないようにするには以下のSQL文のように外部クエリでソートを行う
【SQL文】
「kana」列をソートのためだけに使用し、最終的な出力結果には表示しない場合、外部クエリでソートを行う
SELECT final.employee, final.child FROM ( SELECT employee, kana, child_1 AS child FROM Personnel2 UNION ALL SELECT employee, kana, child_2 AS child FROM Personnel2 UNION ALL SELECT employee, kana, child_3 AS child FROM Personnel2 ) AS final ORDER BY final.kana;
テーブル作成用SQL
/* 外部結合で行列変換 その2(列→行):繰り返し項目を1 列にまとめる */ CREATE TABLE Personnel2 (employee varchar(32), kana varchar(32), child_1 varchar(32), child_2 varchar(32), child_3 varchar(32), PRIMARY KEY(employee)); INSERT INTO Personnel2 VALUES('赤井','あかい', '一郎', '二郎', '三郎'); INSERT INTO Personnel2 VALUES('工藤','くどう', '春子', '夏子', NULL); INSERT INTO Personnel2 VALUES('鈴木','すずき', '夏子', NULL, NULL); INSERT INTO Personnel2 VALUES('吉田','よしだ', NULL, NULL, NULL);