Ver Mensaje Individual
  #5 (permalink)  
Antiguo 21/06/2012, 19:53
Avatar de BlueSkull
BlueSkull
 
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 16 años, 1 mes
Puntos: 4
Respuesta: consulta sql para obtener permisos de usuarios

Estimado gracias por contestar, tu ejemplo me sirvió 100% y los ejemplos que me enviaste igual, mi consulta que quedo casi igual a la que me enviaste pero tengo un problema, todos los primeros datos están bien menos los módulos (me aparecen todos en null) esta es mi consulta:

Cita:
SELECT RUT, USERNAME, PASS, TIPO, ESTADO, [M1], [M2], [M3]
FROM
(

SELECT USUARIO.RUT_PERSONAL AS RUT, USUARIO.USERNAME AS USERNAME, USUARIO.PASSWORD AS PASS, USUARIO.TIPO_USUARIO AS TIPO, USUARIO.ACTIVO AS ESTADO, MODULOS.MODULO AS MODULOS
FROM USUARIO
INNER JOIN ACCESOMODULOS ON USUARIO.RUT_PERSONAL = ACCESOMODULOS.RUT_PERSONAL
INNER JOIN MODULOS ON ACCESOMODULOS.ID_MODULO = MODULOS.ID_MODULO

)AS FUENTE
PIVOT
(
MAX(MODULOS) FOR MODULOS IN ([M1], [M2], [M3])
)AS PVT
Espero me puedas ayudar a sacar este problema gracias.



Cita:
Iniciado por Libras Ver Mensaje
Aqui un ejemplo de pivot tables:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. pointid INT,
  4. lanid INT,
  5. thelabel VARCHAR(30),
  6. datatime datetime,
  7. datavalue VARCHAR(10),
  8. theunits VARCHAR(10),
  9. Expr1 VARCHAR(10)
  10. )
  11.  
  12.  
  13.  
  14. INSERT INTO #temp VALUES (580,8,'Hotel Columbus','10/07/2011 11:00','49,21','DegC','TEP01')
  15. INSERT INTO #temp VALUES (581,9,'Hotel Columbus2','10/08/2011 11:00','49,21','DegC2','TEP02')
  16. INSERT INTO #temp VALUES (581,9,'Hotel Columbus3','10/08/2011 11:00','49,21','DegC2','TEP03')
  17.  
  18. SELECT * FROM #temp
  19.  
  20. SELECT pointid,lanid,thelabel,datatime,datavalue,theunits,[TEP01],[TEP02],[TEP03]
  21. FROM
  22. (
  23.    SELECT Expr1,pointid,lanid,thelabel,datatime,datavalue,theunits FROM #temp
  24. ) AS SOURCE
  25. pivot
  26. (
  27.   MAX(Expr1) FOR Expr1 IN ([TEP01],[TEP02],[TEP03])
  28. ) AS pvt

Si te fijas en el primer select el normal despliega la informacion en filas(resultados para tepo1,tepo2 y tepo3) y en el segundo usando pivot tables lo despliega en columnas :), basate en este ejemplo para obtener lo que necesitas, si observas bien veras y leeras(en internet) que la tabla pivote necesita una funcion de agregado para poder ser usada(en este caso max para que no afecte el resultado).

Mas ejemplos:

http://blogs.msdn.com/b/spike/archiv...le-sample.aspx

http://blog.sqlauthority.com/2008/05...table-example/

http://geeks.ms/blogs/ozonicco/archi...rver-2005.aspx

Saludos!
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter