2016-10-14 10 views
0

午後すべてアクセス更新クエリ:ID一致、日付は2列の日付間

私はAccess 2010データベースの履歴価格を更新するプロジェクトを進めています。私は、トランザクションリストに製品ID、販売日、そのトランザクションの卸売りがある更新クエリを持っています。

私は、その日の製品の開始日の列、終了日の列、および卸売価格を持つ製品IDを持つ2番目のテーブルを持っています。

私がこれまで持っているコードは次のとおりです。テーブルの命名はきれいかもしれない

UPDATE 
    [Copy Of MFRM_SALES_DATA] 
LEFT JOIN 
    [Pricing over Time] 
ON 
    [Copy Of MFRM_SALES_DATA].VSN = [Pricing over Time].[Product Value] 

SET [Copy Of MFRM_SALES_DATA].Upd_Wholesale = 
    IIF 
    (
      [Copy Of MFRM_SALES_DATA].[dt]>[Pricing over Time].[Start Date] 
     AND [Copy Of MFRM_SALES_DATA].[dt]<[Pricing over Time].[End Date], 
     [pricing over time].[value] 
    ); 

が、タスクに集中することができます。これを実行すると、空白を含むUPD_Wholesaleが列の最後まで(約1.2m行)戻されます。

ご協力いただければ幸いです!

おかげ

リッチ

+0

'IIf()'には 'falsepart'引数がありません。私はそれがエラーをスローしないのに驚いています。 – Andre

+0

注:http://www.sqlinform.com/sql_formatter_online.htmlはSQL書式設定に役立ちます。 – Andre

+0

@Andreの場合、falseの場合は0、それでも同じ結果をスローします。書式設定ツールをありがとう。 – RichWolff

答えて

1

問題は、JOINの両側に複数の値に由来してもよいです。あなたは何をしたいのですか?

UPDATE 
    [Copy Of MFRM_SALES_DATA] 
LEFT JOIN 
    [Pricing over Time] 
ON 
    [Copy Of MFRM_SALES_DATA].VSN = [Pricing over Time].[Product Value] AND 
    [Copy Of MFRM_SALES_DATA].[dt]>[Pricing over Time].[Start Date] AND 
    [Copy Of MFRM_SALES_DATA].[dt]<[Pricing over Time].[End Date], 

SET 
    [Copy Of MFRM_SALES_DATA].Upd_Wholesale = [pricing over time].[value];