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

SQL左连接结果行转列需求:将两行记录转为单行两列

解决左连接后行转列的单行结果问题

嘿,我懂你现在的困扰:用左连接加case when生成t1、t2列后,返回的是两行数据,每行只有一个列有有效值,另一个是null。想要把它们合并成你期望的单行结果(比如t1=22,t2=120),只需要给case when的结果套个聚合函数,再配合group by就能搞定!

修改后的SQL语句

SELECT 
    MAX(case when l.PatientVisitCluster=1 then t.Result end) as t1, 
    MAX(case when l.PatientVisitCluster=2 then t.Result end) as t2 
FROM tPatientLabTestData t 
LEFT JOIN tPatientLabTest l ON t.tPatientLabTestId = l.Id 
WHERE l.PatientId = @PatientId 
  AND l.Volgnar = @Volgnar 
  AND l.TestTypeListId = @LabTestId
GROUP BY l.PatientId, l.Volgnar, l.TestTypeListId

逻辑说明

  • 你的原语句里,每一行对应一个PatientVisitCluster值,所以t1和t2会交替出现有效值和null。
  • 用MAX()(或者MIN(),这里效果完全一致)聚合函数可以自动忽略null值,把同一分组下的t1、t2有效值提取出来合并到同一行。
  • GROUP BY子句要包含WHERE条件里的所有非聚合列(PatientId、Volgnar、TestTypeListId),确保分组逻辑精准,只返回你需要的那一组数据。

举个直观的例子:
原查询返回的两行可能是:

t2
null
120

修改后就会变成你想要的单行结果:

t2
120

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:35:57