0
I’m having a doubt I don’t even know if it’s possible:
I would like to perform a select that joins two columns.
Otherwise it would be:
Person table with the cod_person fields - name - rg - razao_social - cnpj
Table Client with cod_client field - cod_person
The select concept would be:  Fetch all clients by displaying cod_client - name/razao_social - rg/cnpj
Example of recorded data:
Table Person:
cod_pessoa  | Nome    | Rg            | Razao_Social       | Cnpj
1           | Luis    | 10.100.100-1  |                    |
2           | Carlos  | 20.200.200-2  |                    |
3           |         |               |Lanchonete do Paulo | 30.300.300/3000-30
Table Client
cod_cliente  | cod_pessoa
1            | 1
2            | 2
3            | 3
I would like the result to be as follows:
cod_cliente  | Nome/Razao_social     |  Cpf/Cnpj
1            | Luis                  | 10.100.100-1
2            | Carlos                | 20.200.200-2
3            | Lanchonete do Paulo   | 30.300.300/3000-30
I would like to get this result because I am doing a project in C# and in one of the forms I perform a survey of customers the result feeds a datagrid. And the visual result of what I’m wanting would be more pleasurable than a result with blank gaps.
I’ve tried it in many ways, the one that came the closest was this:
select cli.cod_cliente, pes.nome, pes.cpf from tab_Cliente cli
inner join tab_Pessoa pes on cli.cod_pessoa = pes.cod_pessoa
where pes.nome like '%%' --(condição)
union
select cli.cod_cliente, pes.razao_social, pes.cnpj from tab_Cliente cli
inner join tab_Pessoa pes on cli.cod_pessoa = pes.cod_pessoa
where pes.razao_social like '%%' --(condição)
Note: the condition will be equal in both select’s
It joins the columns but it presents some flaws such as: it brings blank gaps when it receives empty in condition or brings nothing when in condition it receives 'equal' to the database data.
I am grateful for any suggestion.
--Update-- Reply - based on the answer of dil_oliveira -Thank you very much
**Database Used Sql Server
select 
  cli.cod_cliente, 
  (case when LEN(lTRIM(pes.nome)) > 0 then 
     Nome   
  else
     Razao_Social
  end) as 'Nome/Razao_social',
  (case when LEN(lTRIM(pes.rg)) > 0 then 
     Rg    
  else
     Cnpj
  end) as 'Cpf/Cnpj'
from tab_Pessoa pes
inner join tab_Cliente cli 
on pes.cod_pessoa = cli.cod_pessoa
where pes.nome like '%%' or pes.razao_social like '%%' order by 'Nome/Razao_social'
						
That’s right, thank you very much. I use Sql Server. I will edit my post just by adjusting your code to Sql Server.
– Luis Felipe Micai de Jesus