1

プロジェクトの各レポート期間のレコードを含む大きなテーブルがあります。ピリオドは整数1、2、3、4、5、6、7で識別されます。

各期間には、それぞれが一意のIDを識別した約7000行のタスクが含まれています。これらのタスクにはすべて、整数である完了率の列があります。

比較欄を追加したい。そのため、前の期間の一意のIDを検索してから、完了率の差を返します。

例:期間:8アイテム一意のID:42w3wer324wer32完了率:50

期間:7アイテム一意のID:42w3wer324wer32完了率:40

フィールドに次のように入力します:10。

前の期間にアイテムの一意のIDが見つからなかった場合、デフォルトで0になります。

ありがとう

4

1 に答える 1

0

あなたの説明を理解しているので、次のように期間8のデータを取得できます。

SELECT item_id, pct_complete
FROM YourTable
WHERE rpt_period = 8;

また、前の期間は、期間として7を置き換えることを除いて、同じクエリになります。

したがって、期間8のクエリを取得し、期間7のサブクエリに結合したままにします。

SELECT
    y.item_id,
    (y.pct_complete - Nz(sub.pct_complete, 0)) AS change_in_pct_complete
FROM YourTable AS y
LEFT JOIN
    (
        SELECT item_id, pct_complete
        FROM YourTable
        WHERE rpt_period = 7
    ) AS sub
ON y.item_id = sub.item_id
WHERE rpt_period = 8;

Nz()期間8に期間7の一致が存在しない場合、その式はNullの代わりに0を使用しitem_idます。

Accessセッション内から実行されないクエリが必要な場合、このNz()関数は使用できません。その場合、IIf()式を使用できます...それはそれほど簡潔ではありませんが、それは仕事を成し遂げます。

IIf(sub.pct_complete Is Null, 0, sub.pct_complete)
于 2012-10-19T02:20:59.943 に答える