Exemplo:
select tabela1
case when <Campo_de_outra_tabela> then xxxxx
case when <Campo_da_mesma_tabela> ???????
Exemplo:
select tabela1
case when <Campo_de_outra_tabela> then xxxxx
case when <Campo_da_mesma_tabela> ???????
Você tem que dar JOIN nelas para pode usar.
Supondo que você tenha as seguintes tabelas
ALUNO
id - nome - estado
CURSO
id - nome - hora_inicio
MATRICULAS
id - aluno_id - curso_id
E você queira um resultado assim:
aluno_id, aluno_nome, região (de acordo com o estado), período (de acordo com o horário de inicio), você teria que fazer um JOIN entre as tabelas e escrever uma consulta como esta:
SELECT A.id, A.nome,
CASE
WHEN A.estado = 'SP' OR A.estado = 'MG' or A.estado = 'RJ' OR A.estado = 'ES' then 'SUDESTE'
WHEN A.estado = 'RS' OR A.estado = 'SC' or A.estado = 'PR' then 'SUL'
ELSE 'SEM REGIAO' END as regiao,
CASE
WHEN C.hora_inicio < 12 then 'MANHA'
WHEN C.hora_inicio > 12 and C.hora_inicio <18 then 'TARDE'
ELSE 'NOITE' END as periodo
from aluno as A
INNER JOIN matriculas as M ON A.id = M.aluno_id
INNER JOIN curso as C on C.id = M.curso_id
Exemplo: Nesse caso eu fiz um JOIN entre as tabelas ORDEMCOMPRA e ORDEMCOMPRA_LINHA e apresentei se o pagamento pode ser feito utilizando um CASE.
Quando a coluna TB1.STATUS (tabela ORDEMCOMPRA) for APROVADO e a coluna TB2.LINHA_RECEBIDA (tabela ORDEMCOMPRA_LINHA) for SIM então exibirá PAGAR, senão exibirá NAO PAGAR.
select tb1.id,
tb2.produto_id,
case
when tb1.status = 'APROVADA' and tb2.linha_recebida = 'SIM'
then 'PAGAR'
else 'NAO PAGAR'
end as SituacaoPagamento
from ordemcompra tb1 with (nolock)
inner join
ordemcompra_linha tb2 with (nolock)
on tb2.id = tb1
where tb1.datacompra > getdate() - 30;