Girar uma tabela em SQL Server
Este artigo descreve como girar uma tabela em SQL Server.
Versão original do produto: SQL Server
Número de KB original: 175574
Resumo
Este artigo descreve como girar uma tabela de SQL Server. Suponha que você tenha uma tabela chamada QTRSALES
. A tabela tem as colunas YEAR
, QUARTER
e AMOUNT
com os dados no formato a seguir.
Observação
Não há linha para o quarto trimestre de 1996:
Ano | Trimestre | Valor |
---|---|---|
1995 | 1 | 125,000.90 |
1995 | 2 | 136,000.75 |
1995 | 3 | 212,000.34 |
1995 | 4 | 328,000.82 |
1996 | 3 | 728,000.35 |
1996 | 2 | 422,000.13 |
1996 | 1 | 328,000.82 |
Agora, suponha que você queira girar a tabela para que você possa ver os dados no seguinte formato:
YEAR | Q1 | 2º trimestre | Q3 | Q4 |
---|---|---|---|---|
1995 | 125,000.90 | 136,000.75 | 212,000.34 | 328,000.82 |
1996 | 328,000.82 | 422,000.13 | 728,000.35 | 0.00 |
A consulta que você usaria para girar a tabela está na próxima seção deste artigo.
Consulta de exemplo para girar a tabela
Aqui está a consulta que você usaria para girar a tabela:
SELECT YEAR,
Q1= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 1 AND YEAR =
Q.YEAR),0),
Q2= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 2 AND YEAR =
Q.YEAR),0),
Q3= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 3 AND YEAR =
Q.YEAR),0),
Q4= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 4 AND YEAR =
Q.YEAR),0)
FROM QTRSALES Q
GROUP BY YEAR
Consulta para tabelas grandes
Para tabelas grandes, essa consulta será mais rápida:
SELECT YEAR,
SUM(CASE quarter WHEN 1 THEN amount ELSE 0 END) AS Q1,
SUM(CASE quarter WHEN 2 THEN amount ELSE 0 END) AS Q2,
SUM(CASE quarter WHEN 3 THEN amount ELSE 0 END) AS Q3,
SUM(CASE quarter WHEN 4 THEN amount ELSE 0 END) AS Q4
FROM qtrsales q
GROUP BY YEAR
Referência
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários