0
WITH base AS (
SELECT 'ID1' as id, 0 as foo
UNION
SELECT 'ID1' as id, -1 as foo
UNION
SELECT 'ID2' as id, 2 as foo
UNION
SELECT 'ID2' as id, null as foo
UNION
SELECT 'ID2' as id, -1 as foo
UNION
SELECT 'ID2' as id, 1 as foo
)
select
id
,MAX(CASE WHEN char_length(foo) > 0 THEN foo ELSE NULL END)
from base
GROUP BY id
ORDER BY id ASC
此查询返回ID1的2和ID2的2。SQL:选择原始最高绝对值
我想要的是一个SELECT表达式,它将为ID1返回-1,为ID2返回2。
MAX(ABS())
几乎是我想要的,但它返回1
而不是-1
。我不能使用JOIN和其他任何东西,只有一个SELECT表达式。有任何想法吗?
凡在你的CTE做列称为'ID1'和'ID2'出现? –
@TimBiegeleisen没有列ID1和ID2。这些是“id”列的值。我改变了值,所以它不那么容易混淆。 –
如果多个ID具有最大foo值,会发生什么情况? –