是否有办法将这些表合并为一个?其思想是,查询识别第二个表上已经存在的行,然后更新最终表上的这些行。
我知道非常基本的SQL,左连接不能解决问题,联合使它更复杂,我非常困惑使用"EXISTS",我也不确定我是否应该使用一个varchar作为连接条件。
期望的结果类似于:
Total | Section | EsConCita | esexpecada | EsAtrasada | EsAtrasada | 0 | Enero区 | 0 | 0 | 0 | 42
---|---|---|---|---|---|
Febrero | 42 | 0 | 0 | ||
0 | Marzo | 0 | 0 | 0 | |
0 | Abril | 0 | 0 | 0 | |
梅奥 | 12 | 3 | 2 | ||
12 | Junio | 12 | 0 | 0 |
您似乎想要left join
,然后从@aux
中获取值,如果它存在:
select coalesce(nullif(a.total, 0), b.total, 0), b.section,
coalesce(nullif(a.EsConCita, 0), b.EsConCita, 0) as EsConCita,
coalesce(nullif(a.EsAnticipada, 0), b.EsAnticipada, 0) as EsAnticipada,
coalesce(nullif(a.EsAtrasada, 0), b.EsAtrasada, 0) as EsAtrasada
from @base b full join
@aux a
on b.section = a.section
我认为您需要的查询是一个简单的join
update b set
b.Total=a.total,
b.EsConCita=a.EsConCita,
b.EsAnticipada=a.EsAnticipada,
b.EsAtrasada=a.EsAtrasada
from @base b join @aux a on a.Section=b.Section