SQL - hacer dos subconsultas para obtener dos filas y pasarlas a columnas

 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 19 puestos en SQL (en relación al último mes)
Gráfica de SQL

hacer dos subconsultas para obtener dos filas y pasarlas a columnas

Publicado por Alex (2 intervenciones) el 07/08/2020 23:51:57
[img]Hola que tal a todos! soy nuevo en sql y estoy tratando de pasar dos filas a columnas el problema es que ya intente con pivot pero no da el resultado que quiero, quisiera saber si hay alguna otra manera, de ante mano Gracias, bueno el problema es este, tengo una tabla de alumnos donde se guardan las notas y se agrega Aprobado y No Aprobado con su numero de curso NoPC y su id IndexNo

la tabla 1 y 2 son las que se relacionan y la 3 seria el resultado.

Tabla 1
NoPC]--[IndexNo]--[Estado]
PC100]--[234567]--[Aprobado ]
PC101]--[ 765432]--[No Aprobado]
PC104}--[123456]---[Aprobado ]

Tabla2
IndexNo]--[Nombre]--[Renglon]
234567]-- [Jose]-----[ 11 ]
765432]-- [Vivian]---[ 22 ]
123456]-- [Axel]------[ 11 ]


Resultado
Renglon]-- [Aprobado]--[ No Aprobado]
11 ]------------[ 2]-----------------[0 ]
22 ]-------------[0 ]----------------[1 ]
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jaime
Val: 7
Ha aumentado su posición en 6 puestos en SQL (en relación al último mes)
Gráfica de SQL

hacer dos subconsultas para obtener dos filas y pasarlas a columnas

Publicado por Jaime (1 intervención) el 08/08/2020 00:11:22
Hola. No entiendo bien lo que quieres y el PIVOT que mencionas es de SQL SERVER; pero hasta lo que entendí con tu explicación, te sugiero que uses SQL puro(digo puro, aunque la query que voy a poner de ejemplo es para MySQl) y haz una consulta con JOIN, así (no he probado la consulta, aclaro por si hay errores, lo importante es ilustrar una posible solución):

1
2
3
4
5
SELECT Tabla2.Renglon,
    (SELECT Count (*) FROM Tabla1 WHERE Tabla1.Estado='Aprobado'  GROUP BY Tabla1.Estado) as Aprobado,
    (SELECT Count (*) FROM Tabla1 WHERE Tabla1.Estado='No Aprobado'  GROUP BY Tabla1.Estado) as 'No Aprobado',
FROM Tabla1
INNER JOIN Tabla2 ON Tabla1.IndexNo=Tabla2.IndexNo

Espero te sirva y no olvides en votar por la respuesta si te sirvió de algo, te lo agradecería mucho...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 19 puestos en SQL (en relación al último mes)
Gráfica de SQL

hacer dos subconsultas para obtener dos filas y pasarlas a columnas

Publicado por Alex (2 intervenciones) el 08/08/2020 08:38:48
Gracias amigo , por responder y tomarte tu tiempo me sirvió de mucho tuve que arreglar unas cosas pero me diste casi la solución, me salían los números repetidos por cada renglón pero era porque no tenia una referencia externa en las subconsultas , pero muchas gracias por el aporte se te agradece.


1
2
3
4
5
SELECT Tabla2.Renglon,
    (SELECT Count (*) FROM Tabla1 WHERE Tabla1.Estado='Aprobado'  and Tabla2.IndexNo = Tabla1.IndexNo) as Aprobado,
    (SELECT Count (*) FROM Tabla1 WHERE Tabla1.Estado='No Aprobado' and Tabla2.IndexNo = Tabla1.IndexNo GROUP BY Tabla1.Estado) as 'No Aprobado',
FROM Tabla1
INNER JOIN Tabla2 ON Tabla1.IndexNo=Tabla2.IndexNo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar