2017-10-12 10 views
0

私のテーブルのデータ:SQL:case_when構文エラー、値やショー関連の名前を比較

bookname1 price1 bookname2 price2 bookname3 price3 
-------------------------------------------------- 
abc  1  n   2  zx   3 
abc  1  n   2  zx   3 

マイクエリ:

SELECT 
    *, 
    CASE WHEN (price1 >= price2) 
     THEN price1 
     ELSE 
      CASE WHEN (price2 >= price3) 
        THEN price2 
        ELSE price3 
      END 
    END 
FROM 
    book 

しかし、このクエリを実行している何も返しません。私は3つの価格列を比較して(最高を見つけて)、その本の名前と価格を返すことを望みます。

望ましい結果:教育のための

bookname price1 
---------------- 
zx  3 
zx  3 

感謝。

+0

編集とサンプルデータと望ましい結果を提供します。 –

+0

私は今編集しています、それは以前よりもはっきりしていますか? – hahakwok

+1

。 。また、使用しているデータベースに質問にタグを付けます。 –

答えて

0

あなたはしたいように見える:あなたの質問

select b.*, 
     (case when price1 >= price2 and price1 >= price3 then price1 
      when price2 >= price3 then price2 
      else price3 
     end) as max_price, 
     (case when price1 >= price2 and price1 >= price3 then bookname1 
      when price2 >= price3 then bookname2 
      else bookname3 
     end) as max_price 
from book b; 
+0

何度か質問を編集していますので、よろしくお願いします。 ==私はデータベースを使用しません。私はデータベースを使用しませんでした。私は何が間違っているのか検索します。私はSQLを使用する前に何か迷っています。質問を何度か編集すると、忍耐力に感謝します。私はそれを知っている(SQLとロジック)今すぐ。 – hahakwok

+1

@hahakwok:多くのDBMSでは、表現式を単純化して、式best(price1、price2、price3)で評価することができますが、それ。 –

+0

思い出してくれてありがとう。 – hahakwok

0

最初の "else"は正しくありません。

select *, 
    case 
    when price1 >= price2 then price1 
    when price2 >= price3 then price2 
    else price3 end 
    from book 
+0

rsqlite_send_query(conn @ ptr、statement)のエラー: "case"の近くに:構文エラー – hahakwok

+0

私は正しいことができる構文を学びました。ありがとう – hahakwok

+0

@hahakwok @ JBrooksまたはIであなたのコメントを開始する必要がありますあなたが私を投稿したという通知を受け取らないでください。 – JBrooks

関連する問題