1

マーケティング部門は、まず北米の顧客に焦点を当てたいと考えています。すべての顧客の ID、姓、国を取得します。最初にカナダと米国に住む顧客を取り上げてリストを作成し、最後に ID で並べ替えます。ヒント: ORDER BY 句で IN 式を使用します。

何度も試しました

SELECT CustomerID, LastName, Country
FROM Customer
ORDER BY Country IN ('Canada', 'USA'), CustomerID

しかし、どの国を気にせずに句CustomerIDから削除しても、すべての顧客から指定されたフィールドを元のテーブルに表示される順序 (これも ID 順) で取得するため、機能していないようです。ORDER BYに属します。

私は何をすべきか?私はSQLに本当に慣れていないので、これを修正する方法がわかりません。

編集:すべてのWHERE顧客を考慮する必要があり、カナダとアメリカの顧客がリストの一番上に表示されるようにする必要があるため、まったく適切ではありません。また、チュートリアルはまだそれほど深く進んでいないため、、、およびそのようなステートメントが使用されることを意図しているかどうかもわかりません。UNIONASEXCEPT

4

3 に答える 3

0

SELECT CustomerID, LastName, Country FROM Customer ORDER BY Country IN ('Canada', 'USA') desc, CustomerID asc

于 2018-07-20T01:41:16.447 に答える
-1

IN式は値を返さないため、ソートできません

。試すことができます:

SELECT CustomerID, LastName, Country
FROM Customer
WHERE Country='Canada'

UNION ALL

SELECT CustomerID, LastName, Country
FROM Customer
WHERE Country='USA'
ORDER BY CustomerID

UNION、EXCEPT、および INTERSECT での ORDER BY の使用 クエリで UNION、EXCEPT、または INTERSECT 演算子を使用する場合、ステートメントの最後に ORDER BY 句を指定する必要があり、組み合わせたクエリの結果は並べ替えられます。次の例では、赤または黄色のすべての製品を返し、この組み合わせリストを ListPrice 列で並べ替えます。 https://msdn.microsoft.com/en-us/library/ms188385.aspx#ユニオン

于 2016-06-15T09:29:38.700 に答える