如何在teradata中为sql联合创建表?

zpjtge22  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(278)

我想将两个表合并在一起,以开发患者ID的主列表。
我的问题是这些数据存储在哪里?
我想用联合的结果做一个左连接。有没有办法把这些结果放到一个表格里?

SELECT patid FROM sandbox_jp.claims_women_dx_preg2
UNION
SELECT patid FROM sandbox_jp.claims_women_px_preg2;
ttvkxqim

ttvkxqim1#

对于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
;

注意,我假设您要联合的两个表在某种程度上是不同的,在联合查询中使用同一个表没有任何意义。
如果只需要有限的时间,并且您的数据库支持“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
zz2j4svz

zz2j4svz2#

@user\u by\u的答案中的cte逻辑也适用于teradata。
您还可以将结果放入volatile表中:

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;

然后可以从该volatile表中选择,并连接到另一个表。
或者,可以使用派生表,再次连接到另一个表。

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 ...

相关问题