1

私はこのクエリを持っています:

Select VENDOR, CODE, TABOF.OFID,DATEI,DATEF,VARR,VARRT,DESEXT
from (
        Select A_IND,A_COD,A_DES,A_FX,A_ML,
               OFID,DATEI,DATEF,VARR,VARRT,FLAGD,VENDOR
        from ANTAB
        join TABOF
            on (ANTAB.A_COD = TABOF.VENDOR) 
            where
                A_FX <> '' and A_ML <> '' and 
                A_DES <> '' and A_COD <> '' and
                A_IND <> '' and
                A_FX < (47.7 + 0.5) and
                A_FX > (47.7 - 0.5) and
                A_ML < (15.5 + 0.5) and
                A_ML > (15.5 - 0.5) 
            order by
                sqrt(power((A_FX - 47.7),2) + 
                    power((A_ML - 15.5),2))
            limit 1
     )
join OF_MNTAB
    on (OF_MNTAB.OFID = OFTAB.OFID)
    where 
        DATEI <= getdate() and
        DATEF >= getdate() and
        OFTAB.FLAGD = 0 and
        CODE not in ('MANU','TRAN') and
        VENDOR = A_COD
    order by DATEI desc

しかし、実行しようとするとエラーが発生し続けます。「制限」付近の構文エラーであり、制限オプションを削除すると、次の行の結合付近で構文エラーが発生します..私はSQL初心者であり、これは複雑なクエリです私にとって..何が間違っているのですか?

4

2 に答える 2

0

サブクエリ内で limit を使用することはできません。そして、インラインビューのエイリアスを見逃しました

Select VENDOR, CODE, TABOF.OFID,DATEI,DATEF,VARR,VARRT,DESEXT
from (
        Select A_IND,A_COD,A_DES,A_FX,A_ML,
               OFID,DATEI,DATEF,VARR,VARRT,FLAGD,VENDOR
        from ANTAB
        join TABOF
            on (ANTAB.A_COD = TABOF.VENDOR) 
            where
                A_FX <> '' and A_ML <> '' and 
                A_DES <> '' and A_COD <> '' and
                A_IND <> '' and
                A_FX < (47.7 + 0.5) and
                A_FX > (47.7 - 0.5) and
                A_ML < (15.5 + 0.5) and
                A_ML > (15.5 - 0.5) 
            order by
                sqrt(power((A_FX - 47.7),2) + 
                    power((A_ML - 15.5),2))

     ) OFTAB
join OF_MNTAB
    on (OF_MNTAB.OFID = OFTAB.OFID)
    where 
        DATEI <= getdate() and
        DATEF >= getdate() and
        OFTAB.FLAGD = 0 and
        CODE not in ('MANU','TRAN') and
        VENDOR = A_COD
    order by DATEI desc
于 2013-07-03T10:18:51.257 に答える
0

『 Adaptive Server Anywhere SQL ユーザーズ ガイド』の251 ページによると、は使用できますがTOP、 は使用できませんLIMIT。したがって、を削除しLIMIT 1て追加しTOP 1ます。

Select VENDOR, CODE, TABOF.OFID,DATEI,DATEF,VARR,VARRT,DESEXT
from (
        Select TOP 1
               A_IND,A_COD,A_DES,A_FX,A_ML,
               OFID,DATEI,DATEF,VARR,VARRT,FLAGD,VENDOR
...

@chetan が正しく指摘したように、エイリアスも欠落しています。

于 2013-07-03T10:43:48.550 に答える