[英]MACRO to create a table in SQL
大家好,非常感謝您花時間閱讀本文。
我想在Teradata中創建一個宏,它將根據特定參數從另一個表創建一個表。
我的原始表包含三列patient_id,diagnosis_code和Date_of_birth ......
我想構建一個允許我指定診斷代碼的宏,然后它將構建包含具有該診斷代碼的所有患者的數據的表。
我目前的代碼看起來像這樣
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
將分隔的字符串拆分為表格。 您可能需要調整分隔符和結果令牌的長度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.