从2列中获取最高/最低值



我有这个表:

BP1             BP2
-----------------------------
140              80
153              88
90               162
98               214
98               69

我想把它分成两列:一列是高血压,一列是低血压:

预期输出:

BP_High        BP_Low
---------------------------------
140             80
153             88
162             90
214             98
98              69

*所有值都是int

我试过:

SELECT CASE WHEN BP1 > BP2 THEN BP1
WHEN BP1 < BP2 THEN BP2 END BP_High,
CASE WHEN BP1 > BP2 THEN BP2
WHEN BP1 < BP2 THEN BP1 END BP_Low 
FROM Table

,它不工作…它把我搞混了:

BP_High        BP_Low
---------------------------------
140             80
153             88
90             162
98             214
98              69

我也试过了:

SELECT CASE WHEN BP1 > BP2 THEN BP1
ELSE BP2 END BP_High,
CASE WHEN BP1 > BP2 THEN BP2
ELSE BP1 END BP_Low
FROM Table 

是否有其他的方式,然后CASE什么时候为了从2列中获得最高/最低的值?

你的第三次尝试几乎是正确的,你实际上可以在这里使用CASE表达式:

SELECT
CASE WHEN BP1 > BP2 THEN BP1 ELSE BP2 END AS BP_High,
CASE WHEN BP1 < BP2 THEN BP1 ELSE BP2 END AS BP_Low
FROM yourTable;

在MySQL、Postgres、SQLite等数据库中,存在LEAST()GREATEST()的标量函数。在这些数据库上,您的查询可以简化为:

SELECT
GREATEST(BP1, BP2) AS BP_High,
LEAST(BP1, BP2) AS BP_Low
FROM yourTable;

相关内容

  • 没有找到相关文章

最新更新