我有以下查询:
select col1, col2
from ...
where...
给出:
col1 col2
5
17
4 5
12
5
20
4 17
2 3
我想将其转换为一个没有重复的列,如下所示:
col3
5
17
4
12
20
2
3
我该怎么做?
我读了这个主题Combine two columns and add into one new column,但这不是我需要的......运算符||
在这里没有帮助。
修改 col3 只是 col2 和 col1 中显示的所有数字的列表。
答案 0 :(得分:4)
select coalesce(col1,col2)
from table
它将使用col1,如果col1为null,则col2
COALESCE函数返回其第一个参数 空值。仅当所有参数都为null时才返回Null。经常这样 用于在数据时用空值替换默认值 检索显示
答案 1 :(得分:4)
您似乎需要union
select col1 as col3 from t where col1 is not null
union
select col2 as col3 from t where col2 is not null
答案 2 :(得分:1)
您可以使用https://www.postgresql.org/docs/current/static/functions-conditional.html#FUNCTIONS-COALESCE-NVL-IFNULL中记录的COALESCE功能;它返回第一个非null的参数:
yesql# select col1, col2, coalesce(col1, col2) from foo;
col1 │ col2 │ coalesce
══════╪══════╪══════════
5 │ ¤ │ 5
¤ │ 17 │ 17
4 │ 5 │ 4
12 │ ¤ │ 12
5 │ ¤ │ 5
¤ │ 20 │ 20
4 │ 17 │ 4
(7 rows)
答案 3 :(得分:0)
col3只是col2和col1中出现的所有数字的列表。
在这种情况下,这可能是您正在寻找的:
SELECT col1
FROM ...
WHERE ...
UNION
SELECT col2
FROM ...
WHERE ...