簡體   English   中英

MACRO在SQL中創建一個表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM