INSTRUCAO SQL

DIOGOMUNARIN 01/09/2009 22:39:44
#321649
Gelra tenho uma tabela com a seguinte estrutura
AVALIACAO
fk_disciplina
bimetre
fk_aluno
nota

Entao os dados estao dispostos da seguinte forma
fk_disciplina bimestre fk_aluno nota
1 1 1 8
1 2 1 7
1 3 1 6
1 4 1 9

Gostaria de fazer um select que fica-se

fk_aluno fk_disciplina n1 n2 n3 n4
1 1 8 7 6 9

sera q tem alguma for de fazer ?
DIOGOMUNARIN 01/09/2009 23:03:06
#321653
Ah esqueci de postar, o banco eh sql server 2005
RCMRO 01/09/2009 23:03:17
#321654
Resposta escolhida
Diogo,

SQL Server, ACCESS, etc... Qual SGBD?
DIOGOMUNARIN 01/09/2009 23:10:13
#321656
sql server 2005, me parece q o 2005 tem pivot table q faz, mas nao consegui
RCMRO 01/09/2009 23:34:14
#321661
Ai vai

Se preferir usar INNER/LEFT JOIN ao inves de SUB-QUERIES, dá um toque que te mando outra versão.

 
SELECT t1.fk_aluno,
t1.fk_disciplina,
(SELECT ISNULL(t2.nota,0)
FROM avaliacao t2
WHERE t2.fk_aluno = t1.fk_aluno
AND t2.fk_disciplina = t1.fk_disciplina
AND t2.bimestre = 1) n1,
(SELECT ISNULL(t3.nota,0)
FROM avaliacao t3
WHERE t3.fk_aluno = t1.fk_aluno
AND t3.fk_disciplina = t1.fk_disciplina
AND t3.bimestre = 2) n2,
(SELECT ISNULL(t4.nota,0)
FROM avaliacao t4
WHERE t4.fk_aluno = t1.fk_aluno
AND t4.fk_disciplina = t1.fk_disciplina
AND t4.bimestre = 3) n3,
(SELECT ISNULL(t5.nota,0)
FROM avaliacai t5
WHERE t5.fk_aluno = t1.fk_aluno
AND t5.fk_disciplina = t1.fk_disciplina
AND t5.bimestre = 4) n4
FROM avaliacao t1
GROUP BY t1.fk_aluno, t1.fk_disciplina
DIOGOMUNARIN 02/09/2009 15:39:02
#321719
Cara consegui com pivot table...da certinho, seu exemplo esta certo tbm. Obrigado
Vou deixar do jeito q eu fiz, caso alguem precise para algo parecido. Lembrando q com pivot table, so funciona do sql 2005 pra frente, os anteriores a ele nao funciona.

SELECT apelido AS aluno, [1], [2], [3], [4],disciplina
FROM
(SELECT apelido,bimestre,nota,disciplina
FROM v_avaliacoes) AS TBO
PIVOT
(sum(nota) FOR bimestre IN ([1], [2], [3], [4])) AS TPVT
order by aluno,disciplina
Tópico encerrado , respostas não são mais permitidas