2017-11-03 10 views
1

これは単純なSELECTクエリであるべきだと思いますが、動作させることはできません。DISTINCT以外の値を返すSELECTクエリ

基本的に、この例では、私は国と一緒に、Order_IDsの明確なリストを返したい:ORDER_IDに関連する一つの国がある

  • 場合は、その国の値を返す

  • 複数の国が関連付けられている場合は、デフォルト値(「複数」)を返します。

- これは、それが集計関数またはGROUP BYのいずれかに含まれていないため、エラー「列 『販売Data.Country』は、選択リストに無効である返し現時点で

SELECT [Order_ID] 
    ,CASE WHEN COUNT(DISTINCT [Country]) = 1 THEN [Country] ELSE 'Multiple' END as [Combined_Country] 
    FROM [Sales Data] 
    GROUP BY [Order_ID] 

句。"

しかし、GROUP BY句に国を追加すると、デフォルト値 'Multiple'を持つ1つの行ではなく、その注文に関連付けられた国ごとに複数の行が返されます。

助けが必要ですか?

答えて

3

グループ化していないものを集約する必要があります。これはあなたのためにはうまくいくと思います。

SELECT 
    [Order_ID] 
    , CASE WHEN COUNT(Country) > 1 THEN 'Multiple' ELSE MAX(Country) END AS [Combined_Country] 
FROM [Sales Data] 
GROUP BY 
    [Order_ID] 

ここで、国を見ると、私たちは常に集計しています。 COUNT()集計はあなたが本当に気にしているものですが、単一の値を読み込もうとしても、私の場合MAX()では別の集約関数を使用する必要があります。

関連する問題