2011-12-08 19 views
0

私は従業員のパフォーマンス指標を毎日記録するプロジェクトに取り組んでいます。Access 2003のJET SQLの列サブクエリで複数の列を返すにはどうすればよいですか?

recordsテーブルは、従業員の生産性の1日1列を保持します。各列には、そのカテゴリで完了した項目の数に合計シフト時間と短い日付としての日付が加えられます。

metricsテーブルは、有効な日付(短い日付)と、期待される時間単位の生産率を記録するrecordsテーブルの生産性列と一致する列を保持します。

employeesテーブルには、従業員名と電話番号表示オプションが含まれています。

従業員レポートを可変期間に設定すると、時間の経過とともにパフォーマンスが表示され、GroupLevel(1).GroupOnはVBAを使用して設定されます(週、月、四半期などでセクションが作成されます)。

ここでの目標は、レコードテーブルのすべての行(レポートを開くときに後でフィルタリングされるwhereConditionに基づいてフィルタリングされる)を作成することです。metricsテーブルの行は、 records.dateと等しいか等しい。これまでのところ、私はmetrics行のID(または任意の他の単一のフィールド)を取得することができました:私は探しています何

SELECT records.*, employees.first, employees.last, employees.ext, 
    (
    SELECT TOP 1 metrics.id 
    FROM metrics 
    WHERE metrics.date<=records.date 
    ORDER BY metrics.date DESC 
    ) AS MetricsID 
FROM employees 
INNER JOIN records ON employees.id = records.employee 
ORDER BY employees.last; 

は、私はすべての列を持っているので、このクエリを記述するための方法であります各行 - GroupFooter2_Formatの間に計算機能を実行すると、日付範囲の各行に対してmetricsに対してクエリを実行する必要はありません。

recordsの列を自動的にmetricsの対応する列で区切るクエリを書く方法を教えていただけたら、フィールドを直接入力することができます。これらのライン上の

答えて

1

何かが合うことがあります。

SELECT Records.*, Metrics.*, 
    Round([Records].[Productivity]/[Metrics].[ExpectedRate],2) AS Calc, 
    Employees.First, Employees.Last 
FROM ((Records 
INNER JOIN 
    (SELECT records.ID, 
     (SELECT TOP 1 metrics.id 
     FROM metrics 
     WHERE metrics.date<=record.date 
     ORDER BY metrics.date DESC) AS MetricsID 
    FROM records) AS j 
ON Records.ID = j.ID) 
INNER JOIN Metrics ON j.MetricsID = Metrics.ID) 
INNER JOIN Employees ON Records.Employee = Employees.ID; 

しかし、私は提示されたデータは、あなたが「そのカテゴリに完了した項目を」言及したが、カテゴリIDを言及していないという点で単純化されたことを少し怪しいですよレコード表またはメトリック表のいずれかに入力します。

さらに、dateは予約語なので、ほとんどすべてのものにとってひどい名前です。

*を選択することはごくまれですが、フィールド(列)名を使用する必要があります。

+0

これはうまく見える、私はチャンスがあるとき、今日の午後から試してみる。データはカテゴリ型では保存されません。各列は独自のカテゴリです。 "2.0"の修正を保存する – 4AM

+0

ここで唯一の問題は、Round()関数のパラメータが「指定されたフィールドのレコードです.Productivity 'あなたのSQLステートメントのFROM句に記載されている複数のテーブルを参照する可能性がありますが、関連するメトリックがある限りVBAで計算自体を行うことができ、計算フィールドを削除するとクエリが機能します – 4AM

+0

Hmm、クエリがデータシートビューで機能しても、レポートコントロール内の名前付きフィールドを参照しようとすると、上記と同じエラーが発生するように思われます – 4AM

関連する問題