Sql 如何将SELECT CASE值添加到单独的表中

Sql 如何将SELECT CASE值添加到单独的表中,sql,postgresql,Sql,Postgresql,我从两个表(遭遇、患者)的联接中选择了某些值,并编写了一个案例陈述,以便为满足特定条件(遭遇开始日期和停止日期之间的死亡日期)的遭遇ID创建0/1指标。每行都有一个唯一的遭遇id,但如果患者有多个医院遭遇,则可以重复患者id。我试图将大小写值插入到具有相同遭遇ID的另一个表(rcohort)的列中,但当我将值插入新列时,值不会干净地传递,表的大小会加倍。我想知道如何将这些大小写值转换为新表中相应的ID INSERT INTO rcohort (death_at_visit_ind) SELECT

我从两个表(遭遇、患者)的联接中选择了某些值,并编写了一个案例陈述,以便为满足特定条件(遭遇开始日期和停止日期之间的死亡日期)的遭遇ID创建0/1指标。每行都有一个唯一的遭遇id,但如果患者有多个医院遭遇,则可以重复患者id。我试图将大小写值插入到具有相同遭遇ID的另一个表(rcohort)的列中,但当我将值插入新列时,值不会干净地传递,表的大小会加倍。我想知道如何将这些大小写值转换为新表中相应的ID

INSERT INTO rcohort (death_at_visit_ind)
SELECT 
    CASE
     WHEN deathdate BETWEEN start AND stop THEN 1
     WHEN deathdate NOT BETWEEN start AND stop THEN 0
     WHEN deathdate IS NULL THEN NULL
     ELSE 0
    END
FROM encounters JOIN
     patients
     ON encounters.patient = patients.id
WHERE encounters.start > '1999-07-15' AND
      encounters.reasondescription = 'Drug overdose' AND
      encounters.start >= patients.birthdate + interval '18 year' AND
      encounters.start < patients.birthdate + interval '36 year';
插入RCO端口(访问时死亡)
挑选
案例
当死亡日期介于开始和停止之间时,则为1
当死亡日期不在开始和停止之间时,则为0
当死亡日期为空时,则为空
其他0
结束
从遭遇战加入
患者
ON.patient=patients.id
WHERE conteents.start>“1999-07-15”和
Conferences.reasondescription=‘药物过量’和
Conferences.start>=patients.birthdate+间隔“18年”和
遭遇。开始<患者。出生日期+间隔“36年”;

数据翻倍似乎要归咎于连接,它可以做类似的事情。连接正确吗?您可以添加示例数据使这成为一个最小的问题吗?我怀疑“加倍”是因为加载时表不是空的。您可以使用
truncate
将其清空。或者您正在尝试执行upsert吗?插入新行,更新现有行?