
Consulta sobre case when contrucción de matriz
Publicado por Elías (2 intervenciones) el 03/09/2015 19:24:11
Buenos días, amigos.
necesito construir una consulta que me permita extraer en sql server el listado de usuarios y los objetos a los que tiene acceso, de la siguiente manera:
En la primera columna tengo los nombres de usuario y su propietarios. En las columnas subsiguientes como título de columnas los objetos a los que el user tiene acceso. De tal forma que junto al nombre se marcan con X todos los objetos adjudicados al usuario.
Actualmente logro un registro por objeto, lo que no es nada estético. Yo desearía que si el usuario AB10203 tiene acceso a los objetos 1, 2 y 3 de los 1,2,3,4,5,...,n que hay, en una sola línea me aparezcan todas las x bajo el nombre de cada objeto.
Desde ya agradezco cualquier tip o aporte que puedan brindarme.
Esta es actualmente mi consulta
necesito construir una consulta que me permita extraer en sql server el listado de usuarios y los objetos a los que tiene acceso, de la siguiente manera:
En la primera columna tengo los nombres de usuario y su propietarios. En las columnas subsiguientes como título de columnas los objetos a los que el user tiene acceso. De tal forma que junto al nombre se marcan con X todos los objetos adjudicados al usuario.
Actualmente logro un registro por objeto, lo que no es nada estético. Yo desearía que si el usuario AB10203 tiene acceso a los objetos 1, 2 y 3 de los 1,2,3,4,5,...,n que hay, en una sola línea me aparezcan todas las x bajo el nombre de cada objeto.
Desde ya agradezco cualquier tip o aporte que puedan brindarme.
Esta es actualmente mi consulta
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
select distinct
a.USER,
a.NAME AS PROPIETARIO,
case when a.OBJECT='OBJETO 1' then 'X' else '' end as OBJETO 1,
case when a.OBJECT='OBJETO 2' then 'X' else '' end as OBJETO 2,
....
case when a.OBJECT='OBJETO n' then 'X' else '' end as OBJETO n
from
(select distinct
user, name,object
from
BS_USERS_ACC
where
OBJECT in ('OBJETO 1', 'OBJETO 2',..., 'OBJETO n' ) and ACC_STATUS='A') A
group by A.USER, a.NAME,A.OBJECT order by A.USER asc
Valora esta pregunta


0