2017-08-23 13 views
1

私はPostgres WHENの場合クエリエラーがあります。どのようにしてクエリを修正できますか?Postgres WHEN選択クエリ付きの場合

SELECT CASE 
      WHEN AccountStatus='Open' 
      THEN 
      (
       SELECT * 
       from Accounts 
       where statusID=1 
      ) 

     WHEN AccountType='Mutual' 
      THEN 
      (
       SELECT * 
       FROM Accounts 
       WHERE AccountTypeID=2 
      ) 

    END as Status, * 
FROM Accounts 

表示エラー:

more than one row returned by a subquery used as an expression

+0

は、テーブルの詳細を教えてください。 –

+0

これらの2つのサブクエリーは、照会のSELECT部分​​にあるため、単一の値しか戻すことができません。あなたの 'Accounts'テーブルに' StatusID = 1'または 'StatusID = 2'を持つレコードが複数あると思われます。結果セットの単一のレコードに多数のレコードが表示されるとはどのように思われますか?いくつかのサンプルデータと希望の結果を共有するなら、あなたが望むものを得る正しい方法にあなたを導くことができます。 – JNevill

答えて

0

は、私はあなたが以下のように与えられたテーブルの行を取得したい、あなたの問題はケースのクエリではないと思います。 case whenタイプのクエリを実際に使用する場合は、テーブルを詳細に定義してください。

SELECT *, 'Open' AS Status from Accounts where statusID = 1 
UNION ALL 
SELECT *, 'Mutual' AS Status FROM Accounts WHERE AccountTypeID = 2 
-1

あなたはこれを試してみてください: -

SELECT * 
FROM Accounts 
WHERE CASE WHEN (AccountStatus='Open') THEN statusID=1 
      WHEN (AccountType='Mutual')THEN AccountTypeID=2 
     END; 
関連する問題