我有多个joins
的查询。我需要将一个table
的字段与一秒的字段进行比较。如果第一个字段小于另一个字段,我需要用第二个字段覆盖第一个字段。可以使用case或if语句来完成吗?查询提取数据然后创建一行中包含多行的结果集。 PK是unique_key,linex
示例:
unique_key,line1,person_id,service_date,amount unique_key,line2,person_id,service_date,amount unique_key,line3,person_id,service_date,amount
Select t1.Unique_key, t1.linex, t1.person_id,t1.service_date, t1.amount, t2.service_date, t2.amount, t3.service_date, t3.amount
from tbl1 t1
left join tbl2 t2
on t1.unique_key = t2.unique_key
left join tbl3 t3
on t1.unique_key = t3.unique_key
如果第二个服务日期大于第一个服务日期,我需要update
第一个服务日期。
查询比这更复杂。
答案 0 :(得分:0)
case when t2.service_date > t1.service_date
then t2.service_date
else t1.service_date
end as service_date
或者我错过了什么?
答案 1 :(得分:0)
您需要重命名t1.service_date字段:
Select t1.Unique_key
, t1.linex
, t1.person_id
, iif(t2.service_date > t1.service_date, t2.service_date, t1.service_date) as [Overlayed_Service_Date]
, t1.amount
, t2.service_date
, t2.amount
, t3.service_date
, t3.amount
from tbl1 t1
left join tbl2 t2 on t1.unique_key = t2.unique_key
left join tbl3 t3 on t1.unique_key = t3.unique_key