Pivot Table

23/10/2013

0

Geente, outra duvida.

Estou tentando, organizar uma tabela por andar, tenho que fazer um tratamento, pois tem o Terreo, e para poder organizar por andar, eu fiz um convert e algumas coisitas a mais.

vejam ..


with Tipo_Dispositivos_Andar as
(
SELECT
--Andar,
ROW_NUMBER() OVER(ORDER BY convert(int, replace(replace(replace(ANDAR, 'Terreo', ' '),' ',0),'º',' '))) id_linha,
replace(ANDAR, 'º', '') as 'Andar',
Desktop,
Netbook,
Notebook,
Servidor
FROM(
SELECT
--Andar,
ROW_NUMBER() OVER(ORDER BY convert(int, replace(replace(replace(ANDAR, 'Terreo', ' '),' ',0),'º',' '))) Id_Linha,
replace(ANDAR, 'º', '') as 'Andar',
Tipo,
Quantidade
FROM v_Tipo_Dispositivos_Andar
) Imp1
Pivot
(
--@@ROWCOUNT,
SUM(QUANTIDADE)
FOR Tipo in (Desktop,Netbook, Notebook, Servidor)
) Comp2

)
SELECT
--Andar as Andar ,
ROW_NUMBER() OVER(ORDER BY convert(int, replace(replace(replace(ANDAR, 'Terreo', ' '),' ',0),'º',' '))) Id_Linha,
replace(ANDAR, 'º', '') as 'Andar',
isnull (Desktop, 0) as Desktop,
isnull (Netbook,0) as Netbook,
isnull (Notebook,0) as Notebook,
isnull (Servidor,0) as Servidor,
isnull (Desktop, 0) + isnull (Netbook,0) + isnull (Notebook,0) + isnull (Servidor,0) Total
FROM Tipo_Dispositivos_Andar



Desse jeito, conseguir deixar organizado por andar, maaaas esta me retornando assim, os andares que tem diferentes dispositivos, aparecem mais vezes, sendo que estou fazendo um pivot


id andar c c c c c
1 Terreo 2 0 0 0 2
2 2 4 0 0 0 4
3 7 9 0 0 0 9
4 7 0 0 3 0 3
5 7 0 0 0 3 3
6 8 12 0 0 0 12
7 9 17 0 0 0 17
8 10 19 0 0 0 19
9 11 7 0 0 0 7
10 11 0 1 0 0 1



Simone

Simone

Responder

Posts

23/10/2013

Alex Lekao

Ola Simone, boa tarde!!!

Eu nao entendi bem, mas vamos la...

o REsultado que vc esta postando eh referente ao ultimo select que vc colocou certo???


SELECT
--Andar as Andar ,
ROW_NUMBER() OVER(ORDER BY convert(int, replace(replace(replace(ANDAR, 'Terreo', ' '),' ',0),'º',' '))) Id_Linha,
replace(ANDAR, 'º', '') as 'Andar',
isnull (Desktop, 0) as Desktop,
isnull (Netbook,0) as Netbook,
isnull (Notebook,0) as Notebook,
isnull (Servidor,0) as Servidor,
isnull (Desktop, 0) + isnull (Netbook,0) + isnull (Notebook,0) + isnull (Servidor,0) Total
FROM Tipo_Dispositivos_Andar


Experimente colocar um group by e veja se funciona.

Abraco.

Alex - Lekao
Responder

23/10/2013

Simone

Oi, Alex, é diferente sim ..

Seria isso ?

SELECT
ROW_NUMBER() OVER(ORDER BY convert(int, replace(replace(replace(ANDAR, 'Terreo', ' '),' ',0),'º',' '))) id_Linha,

Andar as Andar ,
isnull (Desktop, 0) as Desktop,
isnull (Netbook,0) as Netbook,
isnull (Notebook,0) as Notebook,
isnull (Servidor,0) as Servidor,
isnull (Desktop, 0) + isnull (Netbook,0) + isnull (Notebook,0) + isnull (Servidor,0) Total
FROM Tipo_Computadores_Andar
group by Andar, Desktop, Netbook,Notebook,Servidor


Se for , não deu certo . =/


Vou explicar melhor ..
A View me retorna o seguinte resultado.


Id Andar Disp1 Disp2 Disp3 Disp4 Total
1 Terreo 2 0 0 0 2
2 2 4 0 0 0 4
3 7 0 0 0 3 3
4 7 0 0 3 0 3
5 7 9 0 0 0 9

Preciso que me retorne assim ..

Id Andar Disp1 Disp2 Disp3 Disp4 Total
1 Terreo 2 0 0 0 2
2 2 4 0 0 0 4
3 7 9 0 3 3 15




Responder

23/10/2013

Alex Lekao

entao, acredito que faltou colocar o IDLinha.
Responder

23/10/2013

Simone

Não era isso, mas eu consegui
Só alterei o ROW_NUMBER

Mias uma vez obrigada pela atenção


with Tipo_Computadores_Andar as
(
SELECT
ROW_NUMBER() OVER(ORDER BY convert(int,replace(replace(ANDAR, 'Terreo', ' '),' ',0))) id_Linha,
Andar,
Desktop,
Netbook,
Notebook,
Servidor
FROM
(
SELECT
Tipo,
-- ROW_NUMBER() OVER(ORDER BY convert(int, replace(replace(replace(ANDAR, 'Terreo', ' '),' ',0),'º',' '))) id_Linha,
Andar,
Quantidade
FROM v_Tipo_Computador_Andar
) Imp1
Pivot
(
SUM(QUANTIDADE)
FOR Tipo in (Desktop,Netbook, Notebook, Servidor)
) Comp2
)
SELECT

--ROW_NUMBER() OVER(ORDER BY convert(int,replace(replace(ANDAR, 'Terreo', ' '),' ',0))) id_Linha,
Andar as Andar ,
isnull (Desktop, 0) as Desktop,
isnull (Netbook,0) as Netbook,
isnull (Notebook,0) as Notebook,
isnull (Servidor,0) as Servidor,
isnull (Desktop, 0) + isnull (Netbook,0) + isnull (Notebook,0) + isnull (Servidor,0) Total
FROM Tipo_Computadores_Andar
Responder

23/10/2013

Alex Lekao

legal...

o idlinha que falei era no group by, pensei nele e nao escrevi... rsrsr

mas blz... se funcionou ta valendo... rsrsr

So me esclarece a duvida, continua aparecendo a identificacao da linha? nao ne?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar