2017-12-03 17 views
0

MS Access 2007でSQL初心者とworikingです。複数のカラムを追加しようとしていますが、クエリに含めるカラム数は常に変更されます。たとえば、私はYear to Date予算を計算しなければなりません。ユーザーがクエリを実行するたびに、新しい日付が入力され、Month1、Month2、Month3 ... Month 12列があります。実行時にどのように多くの列をクエリに含めるかを決めるには混乱しています。 ユーザーが2011年8月31日に入力すると、私はMonth1、Month2、Month3、Month4、Month5(これらは年度月です)を選択する必要がありますSQL MS Access 2007でカラム数を動的に変更する

enter image description here

+3

なぜデータをワイドフォーマットで保存していますか? ** 1 **月の列と年度および月のインジケータのみを使用して、長形式の値データを格納します。あなたの質問ははるかに簡単になります。ロングフォーマットは、格納効率、保守性、およびスケーラビリティが優れています。 – Parfait

+0

私は上記のコメントに同意します。長い形式で保存されたデータでは、クロス集計クエリを作成して、質問ごとに変数列で表示することができます。 – Billious

+0

@Parfait私はデータのテーブルを制御できません。私は作業が必要です。 – Prasanna

答えて

0

これは恐ろしい考えです!このようにあなたの日付を保管してください。

enter image description here

QryYTD: コード:

SELECT 
    Sum(qryNet.Net) AS YTD 
FROM 
    qryNet 
WHERE 
    (((qryNet.OrderDate) Between DateSerial(Year(Date()),1,1) AND Date())) 

QryMTD: コード:

SELECT 
    Sum(qryNet.Net) AS MTD 
FROM 
    qryNet 
WHERE 
    (((qryNet.OrderDate) Between DateSerial(Year(Date()),Month(Date()),1) 
AND 
    Date())); 

QryWTD: コード:

SELECT 
    Sum(qryNet.Net) AS WTD 
FROM 
    qryNet 
WHERE 
    (((qryNet.OrderDate) Between DateAdd("d",-Weekday(Date()),Date()+2) 
AND 
    Date())); 

書かれているように、qryWTDは現在の月曜日を開始日として使用します。

3つの作業が完了したら、以前の各クエリを追加し、YTD、MTD、およびWTDをクエリのフィールドとして指定してラッパークエリを作成できます。

関連する問題