2017-09-28 14 views
-1

私はこの情報をどこでも見つけることができません。または、私が正しい質問をしているかどうか少なくとも確かではありません。しかし、どんな助けでもよかったです。SQLクエリ - 切り捨てられた値から50を超える値を取得する方法

私は3列

のその大きい最低場合PRICE値のみを返すことができます。しかし、私はまた、3〜50、次に大きいだけ戻り値をこのクエリをしたいのですが、SQLクエリを持っています。

SELECT id , name , least(coalesce(p1, p2, p3), coalesce(p2, p3, p1), coalesce(p3, p1, p2)) as price FROM invprod.invprod1

どのように私はこれを反映するために、このクエリを変更するのですか?

+0

あなたはより具体的なことはできますか?どのような入力と出力の例を達成したいですか? – ElChupacabra

+0

単に「どこでも(coalesce(p1、p2、p3)、合体(p2、p3、p1)、合体(p3、p1、p2))> 50」を追加できますか? – RToyo

+0

または、あなたのステートメントを内側のselectに変え、外側のselectに "where"節を置きます。 – theGleep

答えて

1

残念ながら、クリーンなソリューションはありません。 LEASE文をwhere句に追加するか、サブクエリにしてpriceをwhere句に追加します。

SELECT 
    id, 
    name, 
    LEAST(
     COALESCE(p1, p2, p3), 
     COALESCE(p2, p3, p1), 
     COALESCE(p3, p1, p2)) AS price 
FROM invprod.invprod1 
WHERE LEAST(
     COALESCE(p1, p2, p3), 
     COALESCE(p2, p3, p1), 
     COALESCE(p3, p1, p2)) > 50 

または

SELECT 
    id, 
    name, 
    price 
FROM (
    SELECT 
     id, 
     name, 
     LEAST(
      COALESCE(p1, p2, p3), 
      COALESCE(p2, p3, p1), 
      COALESCE(p3, p1, p2)) AS price 
    FROM invprod.invprod1 
    ) tbl 
WHERE price > 50 
+1

Googleにそれをしたい人を助けるためのちょっとした話:サブクエリのこの特定の使用は、派生テーブルと呼ばれています。 – RToyo

関連する問題