ドリンクバーゲン会場

なんとか解決!?2010年10月19日 13時03分50秒

クロス集計で止まっていたのですが、T-SQLを使わずに
表示が出せるようになりました。

正直このようなやり方が良いのかどうか、不安な面もあるのですが、
私の知識ではこれがベターだと思っています。

問題点をおさらいすると、科目ごとに評定と単位を表示するのですが、
指導要録のレイアウトに合わせるためには、教科ごとにデータを作らなければいけません。

クロス集計で学年別にデータを作成すると表にはできるのですが、
問題が出てきます。
例えば、教科によっては2年生の時にしか受けない科目や
1年と3年には受けるが2年の時には受けない科目が出てきます。

それでも、クロス集計を全科目で行えば各学年にそれぞれ1科目は入っているので、
なにも問題はないのですが、科目毎にクロス集計を行う場合には問題が発生します。

例を挙げると、家庭科の授業は2年生の時にしか行っていません。
レイアウトでは、左から1年、2年、3年と順番に表示させるのですが、
家庭科の授業では1年のところに2年の評定と単位が入ってしまいます。

最初はT-SQLの使用も考えていたのですが、ダミーのデータがあれば
いけるはずなので、新規に登録することなくダミーのデータをもぐりこませる
方法はないか考えました。

その結果、在籍データと科目データを使ってダミーのデータを作ることができるようになりました。
在籍データには、学年毎の在籍情報が登録されています。
3年生であれば、1年生から3年生までの3件のデータがあるのですが、
その情報と科目データの情報を組み合わせます。

*****************************************************
SELECT dbo.在籍.年度, dbo.科目.科目コード, dbo.科目.科目名, dbo.在籍.クラス番号, dbo.在籍.学籍番号, 0 AS 平均値, 0 AS 単位, 0 AS 評定, ' ' AS 記録,
LEFT(dbo.科目.科目コード, 2) AS グループ
FROM dbo.履歴 CROSS JOIN
dbo.科目
*****************************************************

こんな感じでビューを作成しました。
ダミーのデータなので、評定や単位は0が入っています。
項目は評定テーブルに合わせているので、
評定テーブルとUNIONクエリーを使い、
合わせたものでサブレポートを作成します。
そうすると、先ほどの例でいえば、家庭科にも1年生と3年生のダミーデータが
存在するので、2年生のところに表示されるようになりました。

そして評定と単位を横に並べて表示する方法も解決しました。
評定と単位を一つのデータにしてしまうという方法をとりました。
SQLServerでビューを作成し、評定と単位をまとめ間にスペースを入れて一つのデータにしました。

*****************************************************
CAST(dbo.評定.評定 AS varchar(12)) + '   ' + CAST(dbo.評定.単位 AS varchar(12)) AS 記録,
*****************************************************
上記のような指定でデータを一つにまとめています。

これでレイアウトに合わせて印刷ができるようになったので、
前に進めるようになりました。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://n-box.asablo.jp/blog/2010/10/19/5426241/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。