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

如何将DrData表中医生多行数据合并为单行并设置ActiveIndicator

解决方案

要实现每个医生仅一行数据并正确计算ActiveIndicator,别用DISTINCT,改用分组聚合来判断医生是否存在符合条件的服务记录,具体思路如下:

核心逻辑

以医生的唯一标识(比如DrID)分组,检查该医生的所有记录里是否存在满足DrStartDt < 当前日期且DrEndDt IS NULL的条目——只要有一条符合,ActiveIndicator就设为1,否则为0。

示例SQL代码

根据你使用的数据库,替换对应的当前日期函数:

  • SQL Server: 用GETDATE()
  • MySQL: 用CURDATE()
  • Oracle: 用SYSDATE
SELECT
    DrID,
    -- 可添加医生的其他唯一属性(如姓名、职称),需同步加到GROUP BY中
    MAX(CASE
        WHEN DrStartDt < GETDATE() AND DrEndDt IS NULL
        THEN 1
        ELSE 0
    END) AS ActiveIndicator
FROM DrData
GROUP BY DrID -- 若有其他唯一字段,比如DrName,需写成GROUP BY DrID, DrName

为什么DISTINCT不行?

DISTINCT只是单纯去重,没法基于多条记录的条件做聚合判断。而分组聚合可以遍历每个医生的所有记录,通过MAX()函数保留符合条件的标记(只要有一条满足,MAX(1)就会覆盖0),最终得到准确的ActiveIndicator值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 04:05:56