在 SQL 中创建 table 的 MACRO
MACRO to create a table in SQL
大家好,非常感谢您抽出宝贵时间阅读本文。
我想在 Teradata 中创建一个宏,它将根据特定参数从另一个 table 创建一个 table。
我原来的table由三列组成patient_id、diagnosis_code和Date_of_birth
......
我想构建一个允许我指定诊断代码的宏,然后它将构建 table,其中包含具有该诊断代码的所有患者的数据。
我当前的代码如下所示
Create Macro All_pats (diag char) as (
create table pats as(
select *
from original_table
where diag = :diagnosis_code;)
with data primary index (patid);
我似乎无法让它工作 - 有什么提示吗?
再次感谢
您的代码中有错误的分号并且缺少右括号:
Create Macro All_pats (diag char) as (
create table pats as
(
select *
from original_table
where diag = :diagnosis_code
) with data primary index (patid);
);
编辑:
将多个值作为分隔列表传递更复杂(除非您在存储过程中使用动态 SQL):
REPLACE MACRO All_lpats (diagnosis_codes VARCHAR( 1000)) AS
(
CREATE TABLE pats AS
(
SELECT *
FROM original_table AS t
JOIN TABLE (StrTok_Split_To_Table(1, :diagnosis_codes, ',')
RETURNS (outkey INTEGER,
tokennum INTEGER,
token VARCHAR(20) CHARACTER SET Unicode)
) AS dt
ON t.diag = dt.token
) WITH DATA PRIMARY INDEX (patid);
);
EXEC All_lpats('111,112,113');
顾名思义,StrTok_Split_To_Table
将分隔的字符串拆分为 table。您可能需要调整分隔符和结果标记的长度。
大家好,非常感谢您抽出宝贵时间阅读本文。
我想在 Teradata 中创建一个宏,它将根据特定参数从另一个 table 创建一个 table。
我原来的table由三列组成patient_id、diagnosis_code和Date_of_birth ......
我想构建一个允许我指定诊断代码的宏,然后它将构建 table,其中包含具有该诊断代码的所有患者的数据。
我当前的代码如下所示
Create Macro All_pats (diag char) as (
create table pats as(
select *
from original_table
where diag = :diagnosis_code;)
with data primary index (patid);
我似乎无法让它工作 - 有什么提示吗?
再次感谢
您的代码中有错误的分号并且缺少右括号:
Create Macro All_pats (diag char) as (
create table pats as
(
select *
from original_table
where diag = :diagnosis_code
) with data primary index (patid);
);
编辑:
将多个值作为分隔列表传递更复杂(除非您在存储过程中使用动态 SQL):
REPLACE MACRO All_lpats (diagnosis_codes VARCHAR( 1000)) AS
(
CREATE TABLE pats AS
(
SELECT *
FROM original_table AS t
JOIN TABLE (StrTok_Split_To_Table(1, :diagnosis_codes, ',')
RETURNS (outkey INTEGER,
tokennum INTEGER,
token VARCHAR(20) CHARACTER SET Unicode)
) AS dt
ON t.diag = dt.token
) WITH DATA PRIMARY INDEX (patid);
);
EXEC All_lpats('111,112,113');
顾名思义,StrTok_Split_To_Table
将分隔的字符串拆分为 table。您可能需要调整分隔符和结果标记的长度。