Eu tenho uma declaração de junção que se parece com isto:
select
a.Name
a.Year
a.Month
a.Day
b.Price
into #test_table
from #tableA as a
left join #tableB as b on
a.Name = b.Name
and a.Year = b.Year
and a.Month = b.Month
and a.Day = b.Day
No entanto, há casos em que Mês e/ou Dia podem estar faltando na tabela B e eu estava tentando encontrar uma maneira de juntar apenas os valores disponíveis (por exemplo, apenas em Nome e Ano, quando Mês e Dia são nulos ou em branco). Eu estava pensando que uma abordagem caso-quando poderia ser ideal, no entanto, quando tento a abordagem abaixo, recebo "sintaxe incorreta perto de '='" e "sintaxe incorreta perto de 'else'"
select
a.Name
a.Year
a.Month
a.Day
b.Price
into #test_table
from #tableA as a
left join #tableB as b on
case when a.Month = '' then a.Name = b.Name and a.Year = b.Year
else a.Name = b.Name and a.Year = b.Year and a.Month = b.Month and a.Day = b.Day
Devo observar que não quero excluir os registros quando Mês ou Dia for Nulo/Em Branco, mas minha confiança de adesão só diminuiria nesse cenário. Alguma sugestão? Não tenho certeza do que estou perdendo ou como abordar melhor.
1 respostas