漠然としたタイトルに対する謝罪ですが、これは直接的な回答を探すよりもアドバイスが必要です。参考までに、私はSSMS 2014を使用しています。厄介な記憶データのクエリ
私は作成していないデータベースで作業していますが、私は現在の形式でデータを扱うのに苦労しています。私は以下の表の例を挙げました。
+-----+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|DtID | ID | Mo1 | Mo2 | Tu1 | Tu2 | We1 | We2 | Th1 | Th2 | Fr1 | Fr2 |
+-----+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| 565 | 12 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
| 565 | 13 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
| 565 | 14 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 |
| 565 | 15 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
| 572 | 12 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 572 | 13 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
| 572 | 14 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
| 572 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
+-----+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
DTID
は、日付識別子を開始一週間で、IDは、人識別子である、MO1等月曜日AM、月曜日のMo2 PMは、1人がそのセッションに出席した意味を表します。テーブルが600k行を超えています。特定の日付範囲の間でデータを照会しようとしたときに問題が発生します。たとえば、日付の識別子566と575の間に現在の出席マークの合計を求めたいとします。566は565から始まる火曜日を表し、 575は、572から始まる週の木曜日を指します。
私は、以下の形式で書式設定されたテーブル(例:1行目)を使用した方がはるかに快適です。
+-----+----+------+---------+
|DtID | ID | AMPM | Present |
+-----+----+------+---------+
| 565 | 12 | 1 | 0 |
| 565 | 12 | 2 | 1 |
| 566 | 12 | 1 | 0 |
| 566 | 12 | 2 | 1 |
| 567 | 12 | 1 | 1 |
| 567 | 12 | 2 | 0 |
| 568 | 12 | 1 | 0 |
| 568 | 12 | 2 | 0 |
| 569 | 12 | 1 | 1 |
| 569 | 12 | 2 | 0 |
+-----+----+------+---------+
これは可能ですか?データをそのままクエリする有効な方法はありますか?私はかなりSQLに慣れていて、これまでのほとんどすべての学習はこのサイトの質問と回答を解釈してきたものです。私が言うように、私は私が探しているものに対する答えを本当に知っていないので、ここのユーザーの集団的な助言と知恵は私にとって非常に役に立つでしょう。
多くのありがとうございます。
あなたが正しいです。第2の表現は、第1の表現よりもはるかに意味があります。私は既存のテーブルデザインに欠陥があると主張しますが、私たちが持っているものと一緒に作業しなければなりません。必要な形式で入手するにはいくつかの方法があります。別のテーブルに参加して1行を10にすることができます(これはあなたが望むものです) - ここに例があります:http://stackoverflow.com/questions/40866952/merge-start-and-end-columns-to-one -column/40867201#40867201。あなたは10人のすべてのユナイテッドを使うことができますが、一般に、クエリプランナーが最適化するのは難しいです。 –
多くの作業がありますが、データベース設計が一貫してこの「厄介な」ものであり、多くのレポートを行う必要がある場合は、データウェアハウスを構築できます –
2番目の設計に欠陥があると考えています。本当に平日の表現はありません。並べ替えの基準がないため、2番目の表の行が参照する日を指定することはできません。 –