- - PR -
マスタ登録コードだけレコードのフィールドを増やすには
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 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
