【问题标题】:Sql UNION same tables with additional origin column具有附加源列的 Sql UNION 相同表
【发布时间】:2018-01-05 12:17:41
【问题描述】:

我有两张相同的桌子。每一年。

  • 15_docs:

    id、名称、组织、slo、dok

  • 16_docs:

    id、名称、组织、slo、dok

现在我想用两者的 UNION 创建视图,但我需要知道行的来源。

输出视图:

id, name, org, slo, dok, year

我怎样才能做到这一点? 我正在使用 postgreSQL 数据库。

【问题讨论】:

  • 为什么每年都要分开表格?考虑改为使用一张公用表来代替所有年份。

标签: sql postgresql database-design union


【解决方案1】:
 SELECT id, name, org, slo, dok, 'year 2015' FROM 15_docs
UNION
 SELECT id, name, org, slo, dok, 'year 2016' FROM 16_docs

编辑

这肯定适用于 MS SQL 服务器,尚未在 postgresql 上测试过

【讨论】:

  • 工作正常。谢谢。我只需要添加“ AS 'year'”
【解决方案2】:

在这种情况下,您可以使用 UNION 和 UNION ALL,两者都给出相同的结果,因为 UNION 子句在末尾给出不同的行,而 UNION ALL 子句结合了两个查询结果的所有行。但在这种情况下,这个“年份”必须在每一行中创建一个唯一性。 试试这个查询!

 SELECT 
        id,
        name,
        org,
        slo,
        dok,
        'year_15 ' as year
    FROM 
       15_docs

    UNION

    SELECT 
        id,
        name,
        org,
        slo,
        dok,
        'year_16 ' as year
    FROM 
       16_docs

SELECT 
        id,
        name,
        org,
        slo,
        dok,
        'year_15 ' as year
    FROM 
       15_docs

    UNION ALL

    SELECT 
        id,
        name,
        org,
        slo,
        dok,
        'year_16 ' as year
    FROM 
       16_docs

【讨论】:

    猜你喜欢
    • 2012-08-25
    • 2020-03-04
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    相关资源
    最近更新 更多