如何在postgresql中使用select查询创建额外的列和行

时间:2014-10-29 09:18:20

标签: postgresql

以下是我要尝试实现的示例(从不介意选择查询,因为它只是为了显示我的实际问题

例如,

select col1 from(
select 'tab09' as col1
union 
select 'tab09_01' 
union 
select 'tab09_02' 
union 
select 'tab09_03' 
union 
select 'tab09_04' 
) t order by col1

将返回

    col1
    ----------
    tab09
    tab09_01
    tab09_02
    tab09_03
    tab09_04

那么,哪个PostgreSQL函数将有助于获得如下结果

    col1       col2
    ----------+----------
    tab09      tab10
    tab09_01   tab10_01
    tab09_02   tab10_02
    tab09_03   tab10_03
    tab09_04   tab10_04

2 个答案:

答案 0 :(得分:1)

select col1,overlay(col1 placing '10' from 4 for 2) col2 from(
--your select query goes here
) t order by col1


overlay-postgresql doc

答案 1 :(得分:0)

哦,哦,我在这看到一个主要问题。 UNION绝对不是你想要的。 UNION和UNION ALL之间存在重大差异。 UNION会自动过滤重复项,这不是您的目标。 UNION ALL会附加一个。这是许多SQL用户倾向于犯的一个非常常见的错误。这里有些例子。我希望它有所帮助:http://www.cybertec.at/common-mistakes-union-vs-union-all/ 通常UNION vs UNION所有问题都会隐藏在我的桌面上,因为"性能问题"。