0

AccessとMySQLで正常に機能するかなり複雑なクエリがありますが、MSSQLでは機能しません。「キーワード'ORDER'の近くの構文が正しくありません」というメッセージを受け取ります。クエリの目的は、優先配送('USPS Express')を最初に使用して、上位100件の注文を取得することです。

SELECT * 
FROM    (   SELECT 
            TOP 100     o.orderid
                    ,   (   
                            select 1 
                            from    orders 
                            where   orderid = o.orderid 
                            and     oshipmethod = 'USPS Express'
                        ) as ship_priority 
            FROM    orders o 
            WHERE   o.order_status = 10 
        ) 
ORDER BY ship_priority DESC

このクエリが失敗する明らかな理由はありますか?

4

2 に答える 2

3

派生テーブル出力/サブクエリ出力にエイリアスを指定する必要があります。そうしないと、エラーが発生します。

そうは言っても、このクエリはもっと​​良い方法で記述できると思います。

正しいバージョン:句の前にT1に注意してください。ORDER BY簡単な名前を付けましたが、好きなように名前を付けることができます。T1 の代わりに、わかりやすい名前を付けることをお勧めします。

SELECT * 
FROM    (   SELECT 
            TOP 100     o.orderid
                    ,   (   
                            select 1 
                            from    orders 
                            where   orderid = o.orderid 
                            and     oshipmethod = 'USPS Express'
                        ) as ship_priority 
            FROM    orders o 
            WHERE   o.order_status = 10 
        )  T1
ORDER BY ship_priority DESC
于 2012-05-02T19:17:17.350 に答える
1

外部派生テーブルのエイリアスがありません:

これを変える:

        WHERE   o.order_status = 10 
    ) 
ORDER BY ship_priority DESC

これに:

        WHERE   o.order_status = 10 
    ) as derivedTable
ORDER BY ship_priority DESC
于 2012-05-02T19:18:48.563 に答える