您需要在您的两边都有一个 group by,UNION ALL
因为这失败了,因为您使用的是聚合函数sym33.dx
而不指定 group by。因此,PATIENTID 不是第一个选择中的有效 group by 表达式。
create temporary table sand_scipher_ds_db.public.Rf as (
select PATIENTID, max(SVCDATE)-min(SVCDATE) as days from symphony_hvh_db.sym33.dx
group by PATIENTID
having days>90
union all
select PATIENTID, max(SVCDATE)-min(SVCDATE) as days from symphony_hvh_db.sym.dx
group by PATIENTID
having days>90
limit 100
);
select * from sand_scipher_ds_db.public.Rf limit 100
您也可能想合并所有然后分组。您需要像这样进行子选择:
create temporary table sand_scipher_ds_db.public.Rf as (
select a.PATIENTID, max(a.SVCDATE)-min(a.SVCDATE) as days from
(
select PATIENTID, SVCDATE from symphony_hvh_db.sym33.dx
union all
select PATIENTID, SVCDATE from symphony_hvh_db.sym.dx
) a
group by PATIENTID
having days>90
limit 100
);
select * from sand_scipher_ds_db.public.Rf limit 100