0

でデータベースを編集していますAccess 2007。以前は、データベースにはColumns: "Stocks Under Cover This Year"と、"Stocks Under Cover Last Year."たとえば、

今年カバーされた株3

昨年カバーされた株式2

table代わりに「年」列を持つように変更しました。例えば、

年: 2012 ,アンダーカバー株式: 2

年: 2013 ,アンダーカバー株式: 3

私の質問は、クエリを作成する前に、代わりにAnalyst Data.Stocks Under Cover This Year現在のテーブルに合わせて変更するにはどうすればよいですか? Years毎年のクエリが必要な場合は、条件付きmultiple columnsでクエリまたは同じ列に作成する必要がありますmultiple yearか?

form私はそれが言うところにこれを置く必要があります、

昨年カバーされた株式2

今年カバーされた株3

お知らせ下さい。

編集:もう1つの例を追加するには、

同じクエリで、前年の 4q ランクと今年の 4q ランクを知る必要があります。

古いTable:

Stocks_Under_Cover_Last_Year Stocks_Under_Cover_This_Year Rank_Previous_Year Rank_Current_Year
        2                                3                        32               31

新しいTable:

Year Stocks_Under_Cover Rank
2012        2            31               
2013        3            30

しかし、フォームに Previous_Year_Rank: ... などを入力するには、新しいクエリが必要です。

同じformフォーマット:

Stocks_Under_Cover_Last_Year Stocks_Under_Cover_This_Year Rank_Previous_Year Rank_Current_Year
        2                                3                        32               31

編集2:私の解決策は、1つのフォームで複数のクエリを使用することだと思います。最初のクエリは 2012 年をクエリし、選択した値をフォームのフィールドに配置します。2 番目のクエリは、2013 年をクエリし、選択した値をフォームのフィールドに配置します。ただし、複数のクエリからフォームを作成する方法がわかりません。

4

1 に答える 1

0

まず第一に、実際のField Valuesas として使用するのは貧弱な設計ですField Names。したがって、最善の方法はField Names、より賢明なものに変更し、適切な値を保存することです。つまり、代わりに、Year2012またはこのフィールドの値のYear2012ようField Namesに、より一般的でわかりやすいフィールド名に変更する可能性があります。または代わりに。YearStockCovered20122013

したがって、次のようにこのテーブルを簡単にクエリできます。

SELECT YearStockCovered, COUNT(*) as StockCount 
FROM StockTable
GROUP BY YearStockCovered

Normalizationこのリンクでも学習することを検討してください(一番下を見てください)。これは、より賢明なDatabase Design.

于 2013-06-14T12:49:19.047 に答える