Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Reutilizar sub consultas sql

Estas en el tema de Reutilizar sub consultas sql en el foro de SQL Server en Foros del Web. Hola y gracias de antemano por leer mi pregunta lo que estoy tratando de hacer es tratar de volver a usar una sub consulta enviandole ...
  #1 (permalink)  
Antiguo 27/11/2014, 14:32
 
Fecha de Ingreso: mayo-2013
Mensajes: 11
Antigüedad: 11 años, 6 meses
Puntos: 0
Exclamación Reutilizar sub consultas sql

Hola y gracias de antemano por leer mi pregunta lo que estoy tratando de hacer es tratar de volver a usar una sub consulta enviandole unicamente un parametro diferente por ejemplo:

Código SQL:
Ver original
  1. SELECT (SELECT debe - Haber FROM Database1 AS D2 INNER JOIN
  2. D2.id = D.id WHERE Clave = 1) AS saldo_inicial,
  3. (SELECT debe - Haber FROM Database1 AS D2 INNER JOIN
  4. D2.id = D.id WHERE Clave = 2) AS Modificados,
  5. (SELECT debe - Haber FROM Database1 AS D2 INNER JOIN
  6. D2.id = D.id WHERE Clave = 3) AS Definitivos
  7.  FROM Database1 AS D

lo que quiero hacer es reutilizar esa subconsulta en una sola ya que practicamente son lo mismo lo unico que cambia es el parametro de filtro.
  #2 (permalink)  
Antiguo 27/11/2014, 15:03
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Reutilizar sub consultas sql

Y porque no utilizas el UNION

consulta
UNION
consulta
UNION
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 27/11/2014, 15:23
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Reutilizar sub consultas sql

y porque no haces esto:

Código SQL:
Ver original
  1. SELECT CASE WHEN clave=1 THEN debe - Haber END AS saldo_inicial,
  2. CASE WHEN clave=2 THEN debe - haber END AS modificados,
  3. CASE THEN clave=3 THEN debe-haber END AS definitivos
  4. FROM Database1 AS D2 INNER JOIN
  5. D2.id = D.id
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 27/11/2014, 15:39
 
Fecha de Ingreso: mayo-2013
Mensajes: 11
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Reutilizar sub consultas sql

Hola Gracias por sus respuestas iislas y Libras creo que no me explique muy bien

Código SQL:
Ver original
  1. SELECT SUM(SELECT debe - Haber FROM Database1 AS D2 INNER JOIN
  2.     D2.id = D.id WHERE D2.Clave = 1) AS saldo_inicial,
  3.     SUM(SELECT debe - Haber FROM Database1 AS D2 INNER JOIN
  4.     D2.id = D.id WHERE  D2.Clave = 2) AS Modificados,
  5.     SUM(SELECT debe - Haber FROM Database1 AS D2 INNER JOIN
  6.     D2.id = D.id WHERE  D2.Clave = 3) AS Definitivos
  7.      FROM Database1 AS D

La clave no es un parametro externo si no un parametro perteneciente a la Base de datos. por eso no puedo realizar el el case a como sugieres Libras.

Iislas con tu sugerencia pues no estoy muy al dia que digamos con lo que es Union pero investigare y avisare si me funciona
  #5 (permalink)  
Antiguo 27/11/2014, 16:11
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Reutilizar sub consultas sql

porque no???

Código SQL:
Ver original
  1. SELECT CASE WHEN d2.clave=1 THEN debe - Haber END AS saldo_inicial,
  2. CASE WHEN d2.clave=2 THEN debe - haber END AS modificados,
  3. CASE THEN d2.clave=3 THEN debe-haber END AS definitivos
  4. FROM Database1 AS D2 INNER JOIN
  5. D2.id = D.id

asi no funciona???? lo que aqui se pone es una idea no es para que el query te salga a la primera
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: sql-sentencia, subconsultas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:55.