You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

合并sym33、sym表计算svcdate差值SQL出现GROUP BY报错问询

报错原因

  • 第一个查询(查询symphony_hvh_db.sym33.dx表的部分)使用了max(SVCDATE)、min(SVCDATE)聚合函数,但没有添加GROUP BY PATIENTID子句,聚合维度不明确,导致数据库无法识别非聚合字段PATIENTID的分组逻辑,抛出GROUP BY表达式无效的报错。
  • 原有逻辑还存在两处不符合需求的问题:
    • 仅对sym表的计算结果做了days>90的过滤,sym33表的计算结果没有做对应过滤
    • limit 100仅限制了sym表的查询结果,没有作用于合并后的整体结果

修正后的SQL

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 max(SVCDATE)-min(SVCDATE) > 90

  union all
  
  select PATIENTID, max(SVCDATE)-min(SVCDATE) as days 
  from symphony_hvh_db.sym.dx
  group by PATIENTID
  having max(SVCDATE)-min(SVCDATE) > 90
);
select * from sand_scipher_ds_db.public.Rf limit 100;

补充说明

  • 如果你使用的数据库支持HAVING子句引用SELECT中定义的别名,可以将HAVING部分的计算替换为having days>90,简化写法
  • 如果需要对合并后的结果去重,可以将union all替换为union

内容的提问来源于stack exchange,提问作者User1011

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:45:04