- PR -

マスタ登録コードだけレコードのフィールドを増やすには

1
投稿者投稿内容
常連さん
会議室デビュー日: 2004/05/19
投稿数: 22
投稿日時: 2005-05-10 16:49
お世話になっております。
SqlServerを使用したSQLの発行についてお教え下さい。


現在、日付毎に発注のあった色の一覧をグリッドで表示したいと考えています。
Y軸日付(1ヶ月)
X軸にカラーコード

日付 1(赤) 2(青) 3(白)
20050101 1 2 5
20050102 3 4 2
20050103 5 0 8
   〜
20050130 5 2 1
20050131 8 2 0

現在は、コード上限を10とし、固定でSQLを発行して、カラーマスタに存在しないコードのフィールドは表示しないようにしています。

■ SQL
SELECT Mymd.CALD,
Mymd.YOUB,
Fcol01.SURY,
Fcol02.SURY,
Fcol03.SURY,
Fcol04.SURY,
Fcol05.SURY,
Fcol06.SURY,
Fcol07.SURY,
Fcol08.SURY,
Fcol09.SURY,
Fcol10.SURY,

FROM ((((((((((MYMD AS Mymd
LEFT JOIN FCOL AS Fcol01 ON Mymd.CALD = Fcol01.CALD
AND 01 = Fcol01.CODE)
LEFT JOIN FCOL AS Fcol02 ON Mymd.CALD = Fcol02.CALD
AND 02 = Fcol02.CODE)
LEFT JOIN FCOL AS Fcol03 ON Mymd.CALD = Fcol03.CALD
AND 03 = Fcol03.CODE)
LEFT JOIN FCOL AS Fcol04 ON Mymd.CALD = Fcol04.CALD
AND 04 = Fcol04.CODE)
LEFT JOIN FCOL AS Fcol05 ON Mymd.CALD = Fcol05.CALD
AND 05 = Fcol05.CODE)
LEFT JOIN FCOL AS Fcol06 ON Mymd.CALD = Fcol06.CALD
AND 06 = Fcol06.CODE)
LEFT JOIN FCOL AS Fcol07 ON Mymd.CALD = Fcol07.CALD
AND 07 = Fcol07.CODE)
LEFT JOIN FCOL AS Fcol08 ON Mymd.CALD = Fcol08.CALD
AND 08 = Fcol08.CODE)
LEFT JOIN FCOL AS Fcol09 ON Mymd.CALD = Fcol09.CALD
AND 09 = Fcol09.CODE)
LEFT JOIN FCOL AS Fcol10 ON Mymd.CALD = Fcol10.CALD
AND 10 = Fcol10.CODE)

WHERE Mymd.CALD BETWEEN @CALD_MIN AND @CALD_MAX
ORDER BY Mymd.CALD

■ テーブル
MYMD カレンダーマスタ
CALD 日付
YOUB 曜日
COMM コメント

MCOL カラーマスタ
CODE カラーコード
NAME カラー名称
COMM コメント

FHAT 発注ファイル
CALD 日付
CODE カラーコード
SURY 数量

この状態だと、カラーマスタのコード増加に対応できず、カラーマスタは常にコードの連番を振る必要があります。
グリッドのX軸をカラーマスタ存在データと対応させて動的に作成するにはどのようなSQLを記述するのが良いのでしょうか。

日付 15(赤) 23(青) 38(白)
20050101 1 2 5
20050102 3 4 2
20050103 5 0 8
   〜
20050130 5 2 1
20050131 8 2 0


ちなみに、マスタメンテナンスのデータ更新時に、上記のSQLを動的に作成して、ストアドプロシジャーを更新する方法と、
ストリンググリッドにし、各列毎にセレクトし直す方法は考えました。

1

スキルアップ/キャリアアップ(JOB@IT)