如何在 Teradata 中为 SQL 联合创建 table?

How do I create a table for a SQL Union in Teradata?

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

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

  2. 我想对并集的结果进行左连接。有没有办法将这些结果移动到 table?

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

MySQL 例如

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

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

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 个 table 不知何故不同,在该联合查询中使用相同的 table 毫无意义。

如果只是限时需要,而且你的数据库支持"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

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

你也可以把结果放到一个volatile中table:

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 从那个不稳定的 table,加入到您的另一个 table。

或者,您可以使用派生的 table,再次加入您的另一个 table。

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