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

SQL视图查询如何将两类Carers请假类型合并显示为Carers Leave

需求说明

构建数据库视图时,需要将查询结果中的Carers Paid和Carers Unpaid两个请假类型值统一合并显示为Carers Leave。当前已完成请假余额表、请假类型表的基础关联,筛选了指定UID的请假类型数据,基础查询代码如下:

SELECT a.EmployeeUID AS [Employee ID]
       ,b.LongName AS [Leave type] -- 此处需实现两类请假类型合并为同一值显示的逻辑
       ,a.Mins AS [Leave balance] -- 补全原代码缺失的右方括号
FROM   [dbo].[AbsenceBalance] a 
JOIN   [dbo].[AbsenceTypes] b ON a.AbsenceTypesUID = b.UID
WHERE  b.UID IN (3,4,5,6,7)
实现方案

直接用CASE WHEN条件表达式做值映射即可,不需要修改源表数据,仅在查询层做展示值合并。

方案1:按类型名称匹配(通用性强)

判断查询到的请假类型名称,如果属于两个需要合并的Carers类假期,就返回统一的Carers Leave,其余请假类型保留原有名称,完整代码如下:

SELECT 
  a.EmployeeUID AS [Employee ID],
  CASE
    WHEN b.LongName IN ('Carers Paid', 'Carers Unpaid') THEN 'Carers Leave'
    ELSE b.LongName
  END AS [Leave type],
  a.Mins AS [Leave balance]
FROM [dbo].[AbsenceBalance] a 
JOIN [dbo].[AbsenceTypes] b 
  ON a.AbsenceTypesUID = b.UID
WHERE b.UID IN (3,4,5,6,7)

方案2:按类型UID匹配(性能更优)

如果提前确认Carers Paid、Carers Unpaid对应的固定UID(比如UID=3、UID=4对应这两类假期),可以直接通过UID判断,避免字符串匹配的开销,写法如下:

SELECT 
  a.EmployeeUID AS [Employee ID],
  CASE
    WHEN b.UID IN (3,4) THEN 'Carers Leave'
    ELSE b.LongName
  END AS [Leave type],
  a.Mins AS [Leave balance]
FROM [dbo].[AbsenceBalance] a 
JOIN [dbo].[AbsenceTypes] b 
  ON a.AbsenceTypesUID = b.UID
WHERE b.UID IN (3,4,5,6,7)
注意事项
  • 以上写法兼容SQL Server、MySQL、PostgreSQL等主流数据库,可以直接用于视图创建
  • 该逻辑仅修改查询返回的展示值,不会改动AbsenceTypes表中存储的原始请假类型名称
  • 如果后续还有其他需要合并展示的请假类型,只需要在CASE WHEN的判断条件里追加对应的值即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:48:22