1

以下の表があります。

Name          Product
---------------------
Value          2002
HigherLimit    *
HigherLimit    2002
LowerLimit     *

次の条件でdistinct(Name)を返すためのselectステートメントが必要です。

製品が2002の場合は、「2002」を返します。それ以外の場合は、「*」を返します。

これが期待される結果です

Name          Product
---------------------
Value          2002
HigherLimit    2002
LowerLimit     *

どんな助けでも大歓迎です。

ありがとうニジュ

4

1 に答える 1

2

2002はより大きいと評価されるため、次のようにグループ化された集計*を使用できます。MAX()Name

SELECT
  Name,
  MAX(Product) AS Product
FROM yourtable
/* WHERE Product IN ('2002', '*') -- if necessary */
GROUP BY Name
ORDER BY Product DESC

http://sqlfiddle.com/#!2/8da48/2

ただし、実際のテーブルに単なる 2002または*、よりも多くの値があり、最大数ではなく2002値を返したい場合は、aを使用して必要なCASE値(2002)を分離し、他のすべての値をとして返します*。ただし、MAX()集計は同じ方法で適用されます。

SELECT
  Name,
  /* Force *all* values not 2002 to be `*` */
  MAX(CASE WHEN Product = '2002' THEN Product ELSE '*' END) AS Product
FROM yourtable
GROUP BY Name
ORDER BY Product DESC

http://sqlfiddle.com/#!2/f03af/2

于 2013-01-09T02:48:07.150 に答える