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

problema Subconsulta

Estas en el tema de problema Subconsulta en el foro de SQL Server en Foros del Web. hola. soy un usuario novato en lenguaje sql por ende acudo a este foro en busca de un poco de ayuda, mi problema es el ...
  #1 (permalink)  
Antiguo 17/03/2012, 16:45
 
Fecha de Ingreso: marzo-2007
Mensajes: 76
Antigüedad: 17 años, 1 mes
Puntos: 0
problema Subconsulta

hola. soy un usuario novato en lenguaje sql por ende acudo a este foro en busca de un poco de ayuda, mi problema es el siguiente:
tengo una tabla con la sigiente estructura:

MovGenerales.TipoMovimiento,
MovGenerales.IdMovimiento,
MovGenerales.NumMovimiento,
MovGenerales.FechaMovimiento,
MovGenerales.CodContable,
MovGenerales.MontoDebe,
MovGenerales.MontoHaber
Lo que necesito es presentar la sum(MontoDebe-Montohaber) por cuenta contable y para cada uno de los meses del año, empezando con la consutalta la plantee de la siguiente forma:

Código PHP:
SELECT ConMovGenerales.CodContablesum((ConMovGenerales.MontoDebe) - (ConMovGenerales.MontoHaber)) AS Enero,

(
SELECT sum((ConMovGenerales.MontoDebe) - (ConMovGenerales.MontoHaber))
FROM ConMovGenerales
WHERE 
(((Format([FechaMovimiento],'yyyymmdd')) between 20091101 and 20091131)) 
group by codcontable) AS Febrero


FROM ConMovGenerales
WHERE 
(((Format([FechaMovimiento],'yyyymmdd')) between 20091001 and 20090131)) 
group by codcontable 
pero me encontre con el error que me indica que la subconsulta puede devolver como maximo un registro y no se como resolver esto.
  #2 (permalink)  
Antiguo 17/03/2012, 19:09
 
Fecha de Ingreso: julio-2010
Mensajes: 7
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: problema Subconsulta

DECLARE @ANO VARCHAR(4)
SET @ANO= 2011

SELECT SC0.CodContable,TOTAL=COALESCE(SC0.TOTAL),ENERO=CO ALESCE(SC1.TOTAL),FEBRERO=COALESCE(SC2.TOTAL), MARZO=COALESCE(SC3.TOTAL),etc.
FROM((
SELECT M.CodContable,
sum((M.MontoDebe) - (M.MontoHaber)) AS TOTAL
FROM MovGenerales M
WHERE M.FechaMovimiento >= CONVERT(DATETIME,'01/01/'+CAST( @ANO AS VARCHAR)) AND M.FechaMovimiento <= DATEADD(MONTH,12,CONVERT(DATETIME,'01/01/'+CAST( @ANO AS VARCHAR)))-1
GROUP BY M.CodContable
) SC0
LEFT JOIN (
SELECT M.CodContable,
sum((M.MontoDebe) - (M.MontoHaber)) AS TOTAL
FROM MovGenerales M
WHERE M.FechaMovimiento >= CONVERT(DATETIME,'01/01/'+CAST( @ANO AS VARCHAR)) AND M.FechaMovimiento <= DATEADD(MONTH,1,CONVERT(DATETIME,'01/01/'+CAST( @ANO AS VARCHAR)))-1
GROUP BY M.CodContable
) SC1 ON SC0.CodContable=SC1.CodContable
LEFT JOIN (
SELECT M.CodContable,
sum((M.MontoDebe) - (M.MontoHaber)) AS TOTAL
FROM MovGenerales M
WHERE M.FechaMovimiento >= CONVERT(DATETIME,'01/01/'+CAST( @ANO AS VARCHAR)) AND M.FechaMovimiento <= DATEADD(MONTH,2,CONVERT(DATETIME,'01/01/'+CAST( @ANO AS VARCHAR)))-1
GROUP BY M.CodContable
) SC2 ON SC0.CodContable=SC2.CodContable
LEFT JOIN (
SELECT M.CodContable,
sum((M.MontoDebe) - (M.MontoHaber)) AS TOTAL
FROM MovGenerales M
WHERE M.FechaMovimiento >= CONVERT(DATETIME,'01/01/'+CAST( @ANO AS VARCHAR)) AND M.FechaMovimiento <= DATEADD(MONTH,3,CONVERT(DATETIME,'01/01/'+CAST( @ANO AS VARCHAR)))-1
GROUP BY M.CodContable
) SC3 ON SC0.CodContable=SC3.CodContable
etc.

Etiquetas: fecha, registro, select, sql, subconsulta, tabla
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 13:47.