テーブル内のアイテムの売り値段が売り値よりも高いかどうかを判断するために、次の表とSQLクエリがあります。すべての列を表示するSQLクエリ
問合せ:
私が持っているすべてのアイテムを表示する必要があります探しています結果:
SELECT id, name
FROM orders
GROUP BY id, name
HAVING MAX(CASE WHEN buy = 'false' THEN price END) > MIN(CASE WHEN buy = 'true' THEN price END)
問題は、これが唯一の2つの行を返すことですすべての列で売り値より高い買い値。 GROUP BY
を読んで私はそれが明確な値を返すだけであることがわかります。最終結果を達成するために結合を使用する必要がありますか?
|id |buy |date |price |name
--------------------------------------------------
3 false 2017-01-04 19:23:12.000 7 bread
3 false 2017-01-04 19:23:12.000 4 bread
2 false 2017-01-04 19:23:12.000 7 grapes
このクエリを使用すると、赤で強調表示された行の下にある表が表示されます。
SELECT *
FROM orders
WHERE id IN (SELECT id
FROM orders
GROUP BY id, name
HAVING MAX(CASE WHEN buy = 'false' THEN price END) > MIN(CASE WHEN buy = 'true' THEN price END))
を私はクエリに他の列を追加しようとしています。更新された投稿 –