2017-07-27 2 views
1

"DATE"列に3回テーブル(sheet1)を結合しようとしています。しかし、次回のテーブルに参加するたびに、元のテーブルの日付の3,6,9ヶ月前の日付にしておきたいと思います。構文エラーMicrosoft Accessを介してSQL自体のテーブルに参加する

別の類似のテーブルを使用してMicrosoft SQL Server Management Studioでこのクエリを試したところ、正しく実行されましたが、Microsoft AccessでSQLを通じてクエリを実行すると、SYNTAX ERROR(演算子がありません)が表示されます。

ありがとうございます、ありがとうございます!

Sheet1には、「Date」と「SA372 returns」という2つの列があります。テストせず

select 
    Sa.Date , 
    Sa.[SA372 returns], 
    (1+ Sa.[SA372 returns])*(1 + Sb.[SA372 returns])* (1+ Sc.[SA372 returns])*(1+ Sd.[SA372 returns]) as Compound 

from sheet1 Sa 

left join 

sheet1 Sb on Sb.Date = DATEADD(day,-1,dateadd(month,-3,DATEADD(day,1,Sa.Date))) 

left join 

sheet1 Sc on Sc.Date= DATEADD(day,-1,dateadd(month,-6,DATEADD(day,1,Sa.Date))) 

left join 

sheet1 Sd on Sd.Date= DATEADD(day,-1,dateadd(month,-9,DATEADD(day,1,Sa.Date))) 

order by Sa.date asc 
+0

したがって、Sa.Dateに1日を追加し、その結果から3か月を削除し、その結果から1日を削除しますか?インターバル期間は文字列なので、 'DATEADD'ビット全体が' DATEADD( "d"、 - 1、dateadd( "m"、 - 3、DATEADD( "d"、1、Sa.Date) )) ' –

+0

[Multiple INNER JOIN SQL ACCESS](https://stackoverflow.com/questions/20929332/multiple-inner-join-sql-access)の重複している可能性があります。LEFT JOINの場合と同じですが、カッコが必要です。 – Andre

+0

@Andre - JOINSはその質問と重複していますが、DATEADDも見ておく必要があります。 –

答えて

1

、私は、これはあなたが後にしているものだと思います。各周りのブラケットが最後

  • 構文を除いて参加

    • :注

      SELECT 
          Sa.Date 
          , Sa.[SA372 returns] 
          , (1+ Sa.[SA372 returns])*(1 + Sb.[SA372 returns])* (1+ Sc.[SA372 returns])*(1+ Sd.[SA372 returns]) as Compound 
      FROM 
          ((
           sheet1 Sa LEFT JOIN sheet1 Sb ON DATEADD("d",-1,DATEADD("m",-3,DATEADD("d",1,Sa.Date))) = Sb.Date) 
             LEFT JOIN sheet1 Sc ON DATEADD("d",-1,DATEADD("m",-6,DATEADD("d",1,Sa.Date))) = Sc.Date) 
             LEFT JOIN sheet1 Sd ON DATEADD("d",-1,DATEADD("m",-9,DATEADD("d",1,Sa.Date))) = Sd.Date 
      ORDER BY 
          Sa.Date ASC 
      

      DATEADDファンクションにあります。 "d"、 "m"
      https://support.office.com/en-gb/article/DateAdd-Function-63befdf6-1ffa-4357-9424-61e8c57afc19

    • まず、左側のテーブルで結合が結合されます。
      など。 Sa LEFT JOIN Sb ON Sa.Field = Sb.Field
      (これが重要かどうかはわかりませんが、それはそうだと思います)
  • +0

    これはうまくいきました、ありがとう! – user6003641

    関連する問題