我需要查询表,并选择4列的值的3。我需要比较第三列和第四列的值并选择较大的值。比较两列的值,则选择较大的值
例如:
column1 column2 column3 column4
hello hello 3 5
hi hi 7 1
我需要返回:
column1 column2 Hybrid
hello hello 5
hi hi 7
我一直在尝试使用的if/else,但我似乎无法得到正确的语法
我需要查询表,并选择4列的值的3。我需要比较第三列和第四列的值并选择较大的值。比较两列的值,则选择较大的值
例如:
column1 column2 column3 column4
hello hello 3 5
hi hi 7 1
我需要返回:
column1 column2 Hybrid
hello hello 5
hi hi 7
我一直在尝试使用的if/else,但我似乎无法得到正确的语法
select column1, coloumn2, case when column3 < column4 then column4 else coloum3 end from table.
看起来你在这个片段中有一些拼写/语法问题。 –
试试这个代码:
SELECT column1, column2,
(CASE WHEN column3 > column4 THEN column3 ELSE column4 END)
FROM Table1
结果:
COLUMN1 COLUMN2 Hybrid
hello hello 5
hi hi 7
我将通过创建一个视图启动。
CREATE VIEW t_c
SELECT id, c1 AS c FROM t
UNION
SELECT id, c2 AS c FROM t;
然后,我会从该视图中选择。
SELECT id, MAX(c) FROM t_c GROUP BY id;
您可以使用CASE,但如果其中一个值是“空”,则“空”被认为是最大的价值。
为了解决这个问题,你可以使用GREATEST
SELECT GREATEST(column3, column4)
FROM Table1
这并不能回答这个问题。您可以[搜索类似的问题](https://stackoverflow.com/search),或参考页面右侧的相关和链接问题来查找答案。如果你有一个相关但不同的问题,请[提出一个新问题](https://stackoverflow.com/questions/ask),并包含一个链接以帮助提供上下文。请参阅:[提问,获得答案,不要分心](https://stackoverflow.com/tour) –
只是让我们不要返回null:
SELECT IIF(a > b, a, COALESCE(a, b)) -- coalesce or isnull
FROM wherever
这里有一个查询来测试它:
with whatever as (
select null as a, 1 as b
UNION
select 1 as a, null as b
union
select 1 as a, 0 as b
union
select 0 as a, 1 as b
union
select null as a, null as b
)
select(iif(a > b, a, isnull(b, a)))
from whatever
应返回
null
1
1
1
1
如果您使用的是Oracle,您可以使用GREATEST函数。 – user1427302
“sql-server-2008”不存在'IIF',这是问题的标记。 – MatBailie
'IF/ELSE'在这里不起作用。 – Kermit
列结果上的混合值应该是5和7是否正确? – Yaroslav