如何在Teradata中为SQL Union创建表?

时间:2018-11-30 02:52:02

标签: mysql union teradata

我想将两个表合并在一起,以开发出列出患者ID的主数据。

  1. 我的问题是此数据存储在哪里?

  2. 我想对联合结果进行左联接。有没有办法将这些结果移到表中?

    Error: spawn /usr/bin/python ENOENT
        at Process.ChildProcess._handle.onexit (child_process.js:232)
        at onErrorNT (internal/child_process.js:407)
        at process._tickCallback (next_tick.js:63)
        at Function.Module.runMain (loader.js:744)
        at startup (internal/bootstrap/node.js:285)
        at bootstrapNodeJSCore (internal/bootstrap/node.js:739) 
    

2 个答案:

答案 0 :(得分:1)

例如对于MySQL

CREATE TABLE new_tbl 
SELECT patid FROM db1.claims_women_dx_preg2 
UNION 
SELECT patid FROM sandbox_jp.claims_women_px_preg2
;

,但其他数据库的语法不同,例如SQL Server:

CREATE patid
into new_tbl 
from (
    SELECT patid FROM [dbo].claims_women_dx_preg2 
    UNION 
    SELECT patid FROM [sandbox_jp].claims_women_px_preg2
    ) u
;

请注意,我假设您要合并的2个表有所不同,在该联合查询中使用同一张表毫无意义。

如果仅在有限的时间内需要它,并且您的数据库支持“ with”,则

with cte as (
        SELECT patid FROM [dbo].claims_women_dx_preg2 
        UNION 
        SELECT patid FROM [sandbox_jp].claims_women_px_preg2
)
select
*
from cte

答案 1 :(得分:0)

@User_By_Already的答案中的CTE逻辑也适用于Teradata。

您还可以将结果放入易失性表中:

CREATE VOLATILE TABLE VT as (
SELECT patid FROM sandbox_jp.claims_women_dx_preg2
UNION
SELECT patid FROM sandbox_jp.claims_women_px_preg2)
with data
primary index(patid)
on commit preserve rows;

然后,您可以从该易失性表中进行选择,并连接到另一个表。

或者,您可以使用派生表,再次连接到另一个表。

select
...
from
(SELECT patid FROM sandbox_jp.claims_women_dx_preg2
UNION
SELECT patid FROM sandbox_jp.claims_women_px_preg2) p
join <other table> on ...