2017-08-19 16 views
0

私はSQL言語(Oracleまたはアクセスでもない)での初心者です、私はMS AccessのSQLコードにこのOracle SQLを変換しようとしていますが、それは次のエラーで失敗しました:MS Accessの構文エラー

Syntax error(missing operator) in query expression 

どれでもアイディア?

のOracle SQL

SQL> select 
    2 o.item, 
    3 o.qty ord_qty, 
    4 i.loc, 
    5 i.purch, 
    6 i.qty loc_qty, 
    7 sum(i.qty) over (
    8  partition by i.item 
    9  order by i.purch, i.loc 
10  rows between unbounded preceding and current row 
11 ) sum_qty 
12 from orderline o 
13 join inventory i 
14  on i.item = o.item 
15 where o.ordno = :pick_order 
16 order by 
17 o.item, 
18 i.purch, 
19 i.loc; 

MS AccessのSQL

SELECT o.item, o.qty AS ord_qty, i.Loc, i.purch, i.qty AS loc_qty, sum(i.qty) over (partition by i.item rows between unbounded preceding and current row) AS sum_qty 
FROM orderline AS o INNER JOIN inventory AS i ON o.item = i.item 
WHERE (((o.ordno)=1)) 
ORDER BY o.item, i.purch, i.Loc; 
+0

私が知る限り、分析機能はありません。 – OldProgrammer

+1

Ms Accessがウィンドウ機能をサポートしていれば、私は非常に驚くでしょう。あなたの問題は、 'SUM()... OVER'句にある可能性があります – Tim

+1

私の助言:別のデータベースを選択してください。多くの無料のデータベースがあり、MS Accessよりも機能的なデータベースの無料版があります。 –

答えて

0

あなたはおそらく、あなたが相関サブクエリを使用してやりたいことができます。私の推測は次の通りです。

SELECT o.item, o.qty AS ord_qty, i.Loc, i.purch, i.qty AS loc_qty, 
     (SELECT SUM(i2.qty) 
     FROM orderline o2 INNER JOIN 
      inventory as i2 
      ON o2.item = i2.item 
     WHERE o2.ordno = 0.orderno AND 
       i2.item = i.item AND 
       (i2.purch < i.purch or 
       i2.purch = i.purch and i2.loc = i.loc 
      ) 
     ) as sum_qty 
FROM orderline AS o INNER JOIN 
    inventory AS i 
    ON o.item = i.item 
WHERE o.ordno = 1 
ORDER BY o.item, i.purch, i.Loc; 
+0

Oracleコードには、分析SUM()のORDER BYがあります。 Accessへの変換は試行されません。 Accessは構文にかかわらず分析関数をサポートしていないため、これは無関係です。 – mathguy

+0

@mathguy。 。 。ありがとうございました。私はMS Accessコードに集中していたので、それを逃しました。オリジナルのOracleコードに合わせて答えを修正しました。 –

関連する問題