我有一张桌子。
Name Product
---------------------
Value 2002
HigherLimit *
HigherLimit 2002
LowerLimit *
我需要一个select语句来返回具有以下条件的distinct(Name)。
如果产品是2002,则返回'2002',否则返回'*'
这是预期的结果
Name Product
---------------------
Value 2002
HigherLimit 2002
LowerLimit *
非常感谢任何帮助。
由于 二重
答案 0 :(得分: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年的值而不是最大的数字,请使用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