SQL - Transposição de linhas de algumas colunas em uma tabela para cada registro na mesma tabela

otimista

Estou usando uma plataforma que aceita funções SQL mínimas para escrever um código SQL. A função UNPIVOT não pode ser usada na plataforma, então tenho que fazer isso manualmente. Estou pensando na linha de UNION ALL e depois CROSS JOINING (que tentei, mas acabei com a contagem de registros errada. Por favor, veja a imagem em anexo.

Qualquer ajuda / ponteiro será muito apreciada!

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Gordon Linoff

Você pode usar um cross join, mas requer alguma caselógica. A sintaxe exata depende do banco de dados, mas algo assim:

select t.col1, t.col2,
       (case when n.n = 1 then t.col3 else t.col4 end) as newcol
from t cross join
     (select 1 as n union all select 2) n;

Para carregar outra tabela, você faria o seguinte:

  • insert esses resultados em uma tabela que já foi criada.
  • Use select intoou create table asdependendo do banco de dados.

Se você se preocupa com o pedido, pode adicionar order by t.col1, t.col2, n.n.

Na maioria dos casos, uma union allabordagem simples é adequada (como sugere o GMB). Essa abordagem requer a varredura da tabela duas vezes, o que incorre em alguma sobrecarga adicional. No entanto, se a "tabela" for realmente uma consulta ou visualização complexa, processá-la apenas uma vez é uma vantagem maior.

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

Substitua NA em algumas colunas e linhas com base em uma tabela de pesquisa em R

Atualize uma coluna para algumas linhas em uma tabela usando outro conjunto de registros da mesma tabela

Necessita de ajuda sql: para cada registro na tabela A (tem mais colunas do que a tabela B), insira na Tabela B

Como faço para criar uma tabela com linhas de uma primeira tabela que também corresponde a 3 colunas na linha de uma segunda tabela em R

Ocorrência de contagem SQL de cada registro (inteiro) em uma tabela com várias colunas

Como comparar linhas na mesma tabela com a linha padrão de cada uma?

Filtre as linhas na tabela SQL se houver valor na coluna para cada grupo em uma ordem de prioridade

Replicação de linhas de uma coluna B para cada categoria de uma coluna na Tabela A

SQL - Substração de 2 Linhas na mesma Tabela

SQL Iterar (repetir) uma consulta baseada na lista de agrupamentos de linhas e mesclar os resultados de cada iteração na mesma tabela

Existem 2 tuplas para o mesmo ID em uma tabela e os valores de algumas outras colunas para essas duas linhas são diferentes

Transforme uma tabela de linhas em colunas

Função de chamada SQL para cada linha em cada registro em outra tabela

Tabela de transposição GBQ em SQL

Consulta SQL para inserir a transposição de uma consulta selecionada em outra tabela

Obtenha o registro mais recente de uma tabela com base em 2 colunas na colmeia

Como criar uma tabela com todos os nomes de tabelas em meu banco de dados e para cada um, o número de colunas na tabela

Como atualizar algumas linhas na tabela do banco de dados durante o processamento de dados dessa mesma tabela?

Gatilho do MySQL: atualiza o registro em uma tabela onde o registro na mesma linha corresponde à consulta de seleção

Replicação de linhas em uma tabela pelas colunas

Alternativa SQL para buscar o registro mais recente de cada item em uma tabela usando partição

renomeando algumas colunas em uma tabela de dados em R

Como obter a soma de duas células em colunas múltiplas para cada registro de uma tabela no Laravel

SQL inserir na tabela novas linhas para cada campo na mesma tabela

SQL atualizando um registro em uma tabela relativo a outro registro na mesma tabela

SQL - copiar certas linhas de uma tabela para a mesma tabela e alterar seus valores

Replicação de linhas em uma tabela pelas colunas de uma tabela diferente

T-SQL / Crie uma tabela em que suas colunas dependam de linhas de outra tabela

Em uma tabela MySQL, selecione uma ou mais linhas e atualize as colunas de cada uma

TOP lista

quentelabel

Arquivo