有选择地跨列sql组合数据

时间:2016-09-29 11:09:04

标签: sql postgresql

我有一个包含5列的表格。数据的特征是一行中的所有值都相同......但每列中并不总是有值。一个例子是

h1 h2 h3 h4 h5
1  1        1
   2  2     2 
4        4  4
8     8     
21 21  

我想创建一个列,列出每行中的唯一编号。例如。输出将是:

output
1
2
4
8
21

我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

检查GREATEST()条件表达式,该表达式为每行返回单个最大值

SELECT GREATEST(h1,h2,h3,h4,h5)
FROM tableName

当然,您也可以使用 LEAST()获取最小值。

忽略

NULL 值,如果行的表达式中的所有列都 NULL ,则返回 NULL

答案 1 :(得分:1)

select distinct
coalesce(h1,coalesce(h2,coalesce(h3,coalesce(h4,h5))))
from your_tab
order by 1 

编辑:

distinct是多余的,只需要一个coalesce()

select coalesce(h1, h2, h3, h4, h5)
from your_tab
order by 1 ;