|
▼タロ さん:
こんにちは。
>予約番号 種別 ホテル名 交通費
>1 2 ホテルA
>1 3 300
>2 2 ホテルB
>3 3 1200
>のようにデータにしたいのです。
クエリとして不可能な訳ではありませんが、
データの持ち方としては余り良くないですよね。
A) ユニオンクエリを使う方法
SELECT P.予約番号, P.種別, P.ホテル名, P.交通費
FROM [
SELECT 種類_T.予約番号,種類_T.種別, ホテルT.ホテル名, '' AS 交通費
FROM 種類_T LEFT JOIN ホテルT ON 種類_T.予約番号 = ホテルT.予約番号
WHERE 種類_T.種別=2
UNION ALL
SELECT 種類_T.予約番号, 種類_T.種別, '' AS ホテル名, 電車T.交通費
FROM 種類_T INNER JOIN 電車T ON 種類_T.予約番号 = 電車T.予約番号
WHERE 種類_T.種別=3
]. AS P
ORDER BY P.予約番号, P.種別;
B) IIF関数を使う方法
SELECT 種類_T.予約番号,
種類_T.種別,
IIf([種別]=2,[ホテルT].[ホテル名],Null) AS ホテル名,
IIf([種別]=3,[電車T].[交通費],Null) AS 交通費
FROM (種類_T
LEFT JOIN 電車T ON 種類_T.予約番号 = 電車T.予約番号)
LEFT JOIN ホテルT ON 種類_T.予約番号 = ホテルT.予約番号
ORDER BY 種類_T.予約番号, 種類_T.種別;
|
|