まりふのひと

テーブルを縦展開するユニオンクエリー

今回はExcelから呼び出すのでどうしてもクエリーで処理する必要があり、ユニオンクエリーに久しぶりに挑戦した。なお、Excelからはユニオンクエリーを呼び出せない。そこで、クエリーを一発かませたら、呼び出せた。

※ フィールド
  • 元テーブル(テーブル名は「D_生徒」)

|生徒ID|生徒名|生徒英記|‥‥|在籍CD|入校日|退校日|‥‥

  • 出力フィールド
     入力1件のデータから、入校日と退校日の2件のデータを作る。
    但し、[退校日]が Null の時は退校日のデータは作らない。

|生徒ID|生徒名|生徒英記|在籍CD|年|入校|退校|

    • [年]には、入校日または退校日の年を入れる。
    • [入校]: 入校日のデータは 1 を、退校日のデータは 0 を入れる。
    • [退校]: 退校日のデータは 1 を、入校日のデータは 0 を入れる。
※ ユニオンクエリー(結合クエリー)

Select 生徒ID, 生徒名, 生徒英記, 在籍CD, Year([入校日]) as 年, 1 as 入校, 0 as 退校
from D_生徒 Where ([入校日] Is Not Null)
Union All Select 生徒ID, 生徒名, 生徒英記, 在籍CD, Year([休退日]) as 年, 0 as 入校, 1 as 退校
from D_生徒 Where (([入校日] Is Not Null) and ([休退日] Is Not Null))
Order by [生徒ID]

    • [入校日]が Null のデータは無視する。
    • 全体を[生徒ID]順に並べている。