A junção à esquerda em uma variável de tabela falha

paparazzo

Veja abaixo Eu não obtenho uma linha para cada estatística
Esta junção à esquerda age como uma junção interna
Eu obtenho 6 linhas e espero 9
Eu quero 3 linhas para cada nome (dados nulos se não houver correspondência)
Como corrigir isso?

declare @table table (name varchar(10), status int, data int);
insert into @table values 
  ('a', 1, 2)
, ('a', 2, 5)
, ('a', 3, 7)
, ('b', 1, 5) 
, ('b', 2, 6)
, ('c', 1, 3) 

select stats.status as statusStats
     , t.status as statusData, t.name, t.data
from (values (1),(2),(3)) as stats(status)
left join @table t 
  on t.status = stats.status 

Saída desejada

  ('a', 1, 2)
, ('a', 2, 5)
, ('a', 3, 7)
, ('b', 1, 5) 
, ('b', 2, 6)
, ('b', 3, null)
, ('c', 1, 3) 
, ('c', 2, null)
, ('c', 3, null)
Roger Wolf

Você provavelmente está esperando um produto cartesiano entre valores namee status. Bem, azar - o SQL não pode "adivinhar" isso, você tem que introduzir a multiplicação manualmente:

select stats.status as statusStats, t.status as statusData, t.name, t.data
from (values (1),(2),(3)) stats(status)
  cross join (values ('a'),('b'),('c')) names(name)
left join @table t 
  on t.status = stats.status
  and t.name = names.name;

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Mysql - Como criar um alias de dados de uma tabela inteira em uma junção à esquerda

Usando uma terceira tabela em simples junção externa esquerda

Por que o innerjoin falha quando a tabela contém uma tabela aninhada em uma variável

Conta a soma de uma tabela de junção externa esquerda

registros da tabela à esquerda incomparáveis em uma junção à esquerda nos pandas

Expressão de consulta F #: Como fazer uma junção à esquerda e retornar os registros em que a tabela associada é nula?

Como obter o conteúdo de uma tabela com base na junção à esquerda em duas outras tabelas

É possível filtrar em uma junção à esquerda?

Como faço para usar subconsultas em uma junção à esquerda como uma tabela

Como faço para usar subconsultas em uma junção à esquerda como uma tabela

Como realizar uma junção à esquerda de uma lista de datas com uma tabela existente

R - Como usar uma função variável para referenciar um objeto para uma junção esquerda em R

Junção à esquerda em uma tabela que pode ou não conter os dados

MySQL: Existe uma maneira de acelerar uma junção esquerda procurando por linhas que não correspondem a uma linha em outra tabela?

Por que a inicialização de apenas uma variável em uma definição falha, em golang

Tentar atualizar uma tabela enquanto usa uma junção à esquerda no MySQL dá erro de sintaxe

Como adicionar a evolução de uma determinada variável como uma nova variável em uma tabela de dados R?

Passar uma variável de tabela usando o tipo de tabela em um procedimento armazenado?

Passar uma variável de tabela usando o tipo de tabela em um procedimento armazenado?

Como adicionar um campo de outra tabela a uma consulta de junção à esquerda MS Access

Como usar o LINQ em uma tabela de junção?

Contar um para muitos usando a junção à esquerda fornece uma contagem errada na tabela de origem

Junção externa esquerda com uma tabela apenas de chaves estrangeiras usando Linq no Entity Framework

Como filtrar uma junção à esquerda de muitos para muitos usando a tabela mais à direita?

Tabela de junção de SQL em uma chave modificada

Precisa de ajuda para armazenar o esquema de uma tabela em uma variável no SSIS

Tabela de junção à esquerda com vários registros em um registro mysql

Por que usar uma subconsulta dentro de uma junção à esquerda fornece uma resposta completamente diferente de uma tabela equivalente?

junção interna de duas chaves estrangeiras em uma tabela