Pular para o conteúdo principal

Questão de Banco de Dados — SQL Server — FCC 2024

Banco de DadosSQL Server
Código
fc147224
Banca
FCC
Órgão
SEAD PI
Ano
2024
Cargo
Ana Gov ( )
Um analista da Secretaria de Estado utiliza uma tabela relacional Processo com as colunas IDProcesso, Ano e Quantidade_ de_Pareceres e pretende ver o total de pareceres de cada processo, por ano, em colunas separadas deixando o resultado em um za TabelaAlvo.    Para realizar essa operação no SQL Server, deve.se utilizar o comando
  1. AUNION
  2. BTRANSPOSE
  3. CMERGE
  4. DPIVOT
  5. EJOIN
Revelar gabarito e comentário

GabaritoD — PIVOT

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

SQL Server: operador PIVOT para transformar linhas em colunas

Gabarito: letra D. Para exibir o total de pareceres de cada processo por ano em colunas separadas, o comando correto é o PIVOT, que transforma valores de uma coluna (no caso, Ano) em cabeçalhos de colunas, agregando os valores de outra coluna (Quantidade_de_Pareceres). Esse é um recurso específico do SQL Server (e também do Oracle) para pivotar tabelas, ou seja, girar dados de linhas para colunas.

O PIVOT é um operador de tabela do SQL Server que permite transformar valores únicos de uma coluna em múltiplas colunas no resultado, realizando uma agregação sobre os demais valores. No cenário descrito, o analista quer, para cada IDProcesso, uma coluna para cada Ano (ex.: 2022, 2023, 2024) contendo a soma de Quantidade_de_Pareceres daquele ano. Sem o PIVOT, seria necessário escrever uma consulta com múltiplos CASE ou SUM(CASE WHEN ...), o que é mais trabalhoso e menos legível.

A sintaxe básica do PIVOT é:

SELECT ...
FROM (consulta_fonte) AS origem
PIVOT (
    funcao_agregacao(coluna_valor)
    FOR coluna_para_virar_coluna IN ([valor1], [valor2], ...)
) AS tabela_pivotada;

No caso, a consulta fonte selecionaria IDProcesso, Ano e Quantidade_de_Pareceres; o PIVOT agregaria SUM(Quantidade_de_Pareceres) para cada Ano listado na cláusula IN. O resultado teria uma coluna IDProcesso e uma coluna para cada ano especificado.

É importante distinguir o PIVOT de outros comandos que também manipulam dados, mas com finalidades diferentes:

  • UNION combina resultados de duas ou mais consultas, empilhando linhas (uma abaixo da outra), não transforma linhas em colunas.

  • TRANSPOSE não é um comando SQL padrão nem do SQL Server; é um conceito de matrizes (linhas viram colunas), mas não existe como comando SQL.

  • MERGE é usado para sincronizar duas tabelas (INSERT, UPDATE, DELETE em uma única instrução), não para pivotar.

  • JOIN combina colunas de duas ou mais tabelas com base em uma condição de relacionamento, não transforma linhas em colunas.

A pegadinha da banca está em confundir o PIVOT com o TRANSPOSE (que não é comando SQL) ou com o JOIN, que é usado para relacionar tabelas, não para girar dados. O PIVOT é o único que atende exatamente à necessidade de transformar valores de uma coluna em colunas separadas, com agregação.

Guarde a distinção: PIVOT gira linhas em colunas; UNION empilha linhas; JOIN combina colunas de tabelas diferentes; MERGE sincroniza tabelas. É exatamente essa fronteira que separa as alternativas.

1PIVOT
Transforma linhas em colunas
Agrega valores (SUM, AVG)
2UNION
Empilha linhas de consultas
3JOIN
Combina colunas de tabelas
4MERGE
Sincroniza tabelas (INSERT/UPDATE/DELETE)
5TRANSPOSE
Não é comando SQL
Operadores SQL Server
LEVELsoulevel.com.br
Operadores SQL Server: PIVOT (Transforma linhas em colunas, Agrega valores (SUM, AVG)); UNION (Empilha linhas de consultas); JOIN (Combina colunas de tabelas); MERGE (Sincroniza tabelas (INSERT/UPDATE/DELETE)); TRANSPOSE (Não é comando SQL)

Alternativa A — ❌ Incorreta

O UNION combina os resultados de duas ou mais consultas em um único conjunto de linhas, eliminando duplicatas (ou mantendo com UNION ALL). Ele não transforma valores de uma coluna em colunas separadas. No cenário, o UNION não atenderia à necessidade de exibir totais por ano em colunas distintas.

Alternativa B — ❌ Incorreta

TRANSPOSE não é um comando SQL válido no SQL Server (nem no padrão SQL). O conceito de transposição existe em matrizes e em algumas ferramentas de análise, mas não é uma instrução SQL. A banca incluiu essa alternativa como distrator para confundir com o PIVOT, que é o termo correto para girar dados.

Alternativa C — ❌ Incorreta

O MERGE é utilizado para combinar dados de uma tabela de origem em uma tabela de destino, executando operações de INSERT, UPDATE e DELETE conforme a correspondência entre as linhas. Ele não serve para transformar linhas em colunas nem para agregar valores por ano em colunas separadas.

Alternativa D — ✅ Correta ⟵ GABARITO

O PIVOT é o operador do SQL Server que transforma valores únicos de uma coluna em múltiplas colunas no resultado, aplicando uma função de agregação (como SUM, AVG, MAX) sobre os valores restantes. Exatamente o que o analista precisa: para cada IDProcesso, uma coluna por Ano com o total de Quantidade_de_Pareceres.

Alternativa E — ❌ Incorreta

O JOIN é usado para combinar colunas de duas ou mais tabelas com base em uma condição de relacionamento (ex.: INNER JOIN, LEFT JOIN). Ele não transforma linhas em colunas nem agrega valores de uma única tabela em colunas separadas por ano.

Gabarito: letra D

Link permanente: /questoes/fc147224