Array
(
)

Pivot Table

Dbajr
   - 23 out 2013

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

Alex Lekao
   - 23 out 2013

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???

Citação:

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

Dbajr
   - 23 out 2013

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

Alex Lekao
   - 23 out 2013

entao, acredito que faltou colocar o IDLinha.

Dbajr
   - 23 out 2013

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

Alex Lekao
   - 23 out 2013

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?