cancel
Showing results for 
Search instead for 
Did you mean: 

Ayuda con Query

Former Member
0 Kudos

Jovenes expertos solicito nuevamente su ayuda con un query que la verdad no he podido culminar y agardezco su ayuda lo que necesito es hacer la suma de varios querys en un SP que ya tengo armado pero no he podido realizarlo despues de varios pruebas no he podido armarlo como lo necesito.

El SP es el siguiente:


SELECT  nombre, nombre_rubro,orden,  sum( cantidad)[cantidad] , sum(costo) [costo]

-------------Query 1 ---------------------------

from v_inventario_inicial

where docdate  < @FechaIni

and codigoplanta =@Planta

group by  nombre, nombre_rubro,orden

union all

-----------Query 2-------------------------------

SELECT  nombre, nombre_rubro,orden,  sum( cantidad)[cantidad] , sum(costo) [costo]

from v_compras_consumos

where docdate between @FechaIni and @FechaFin

and codigoplanta= @Planta

group by  nombre, nombre_rubro,orden

union all

-------------Query 3 ------------------

SELECT  dscription, [NOMBRE Rubro],RUBRO,  sum( expr1) [cantidad], sum(expr2) [costo]

from v_consumos2

where Docdate between @FechaIni and @FechaFin

and U_Cod_Planta= @Planta

Group By  dscription,[nombre Rubro], RUBRO

order by nombre,orden

necesito hacer una sumatoria de la columna Cantidad y la columna Costo en base a estos 3 querys que muestra el SP y crear un cuarto query en el mismo SP con esta informacion.

espero me puedan ayudar y de antemano muy agradecido por su ayuda y su tiempo.

Saludos

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

necesitas sumar los resultados de las consutas que haces??

lo que te podria ayudar es variabilizar los resultados y luego sumarlos.

ejemplo:

declare @variable1 int, @variable2 int

select

@variable1=sum(DocEntry),

@variable2=sum(DocNum)

from dbo.ORDR

select @variable1 + @variable2

Former Member
0 Kudos

Gracias Alexis por tu respuesta y te comento que siguiendo tu ejemplo logre visualizar la informacion pero cuando realizo el 4 query me da un error el sistema y el es:

Msg 141, Level 15, State 1, Line 0

No debe combinarse una instrucción SELECT que asigne un valor a una variable con operaciones de recuperación de datos.

el query me quedo de esta forma:

declare @fechaIni datetime

declare @fechafin datetime

declare @planta varchar(8)

set @fechaini='20140101'

set @fechafin='20140930'

set @planta= 'P09'

declare @Nombre varchar(100)

declare @NombreRubro varchar(200)

declare @Orden Varchar(2)

declare @Cantidad int

declare @Costo1 int

declare @Costo2 int

declare @Costo3 int

SELECT  @Nombre=nombre, @NombreRubro=nombre_rubro, @Orden=orden, @Cantidad=sum(cantidad),

  @Costo1=sum(costo)

from v_inventario_inicial

where docdate  < @FechaIni

and codigoplanta =@Planta

group by  nombre, nombre_rubro,orden

union all

SELECT  @Nombre=nombre, @NombreRubro=nombre_rubro, @Orden=orden, @Cantidad=sum(cantidad),

  @Costo2=sum(costo)

from v_compras_consumos

where docdate between @FechaIni and @FechaFin

and codigoplanta= @Planta

group by  nombre, nombre_rubro,orden

union all

SELECT  @Nombre=dscription, @NombreRubro=[NOMBRE Rubro], @Orden=RUBRO,  @Cantidad=sum(expr1),

  @Costo3=sum(expr2)

from v_consumos2

where Docdate between @FechaIni and @FechaFin

and U_Cod_Planta= @Planta

Group By  dscription,[nombre Rubro], RUBRO

union all

SELECT  @Nombre=nombre, @NombreRubro=nombre_rubro, @Orden=orden,  @Cantidad=sum(cantidad),   (@Costo1+@Costo2+@Costo3)[Costo]

from v_inventario_final

where docdate  <= @FechaFin -- <= @FechaFin

and codigoplanta= @Planta

group by   nombre, nombre_rubro,orden

order by @nombre

Espero me puedas ayudar a solucionar este incoveniente.

de antemano muy agradecido por la ayuda y el tiempo.

Saludos

Former Member
0 Kudos

Hola, Carlos.

Intenta con este query:


declare @FechaIni date; --> declarar la variable como la tienes.

declare @FechaFin date; --> declarar la variable como la tienes.

declare @Planta nvarchar(100); --> declarar la variable como la tienes.

set @FechaIni = '20140101'; --> Asignas tus valores.

set @FechaFin = '20140131'; --> Asignas tus valores.

set @Planta = 'Planta01'; --> Asignas tus valores.

with TablaDatos (nombre, nombre_rubro, orden, cantidad, costo)

as

(

------------------ Aquí INICIA tu query ------------------

SELECT  nombre, nombre_rubro, orden,  sum( cantidad)[cantidad] , sum(costo) [costo]

-------------Query 1 ---------------------------

from v_inventario_inicial

where docdate  < @FechaIni

and codigoplanta =@Planta

group by  nombre, nombre_rubro,orden

union all

-----------Query 2-------------------------------

SELECT  nombre, nombre_rubro,orden,  sum( cantidad)[cantidad] , sum(costo) [costo]

from v_compras_consumos

where docdate between @FechaIni and @FechaFin

and codigoplanta= @Planta

group by  nombre, nombre_rubro,orden

union all

-------------Query 3 ------------------

SELECT  dscription, [NOMBRE Rubro],RUBRO,  sum( expr1) [cantidad], sum(expr2) [costo]

from v_consumos2

where Docdate between @FechaIni and @FechaFin

and U_Cod_Planta= @Planta

Group By  dscription,[nombre Rubro], RUBRO

------------------ Aquí FINALIZA tu query ------------------

)

select 'Detalle' [TipoDato], * from TablaDatos -- Aquí te mostrará la información del query como lo tienes actualmente.

union all

select 'Total' [TipoDato], '', '', '', sum(cantidad) cantidad, sum(costo) costo from TablaDatos --> Aquí te muestra la sumatoria de la columna Cantidadd y Costo.

Yo en mis pruebas me funciona, espero en las tuyas también.

Suerte y Saludos,

JC.

Former Member
0 Kudos

gracias Juan Carlos por la ayuda corre perfecto pero los datos me los muestra de la siguiente forma:

                                                  Cantidad  Costo

ItemName    1 Inventario Incial      10           100

                    2 Compras                 5             50

                    3 Ajustes                   2               5

                    4 Consumos              1               5

                    5 Inventario Final       12           140 <--- Sumatoria necesito en base al 100+50-5-5

pero siempre con el query 4 siga apareciendo ya que de el obtengo el itemName, o que hubiera otra forma en la cual pueda obtener el inventario final con una sumatoria de los anteriores agrupado por el nombre del item.

Te agradezco siempre la ayuda y si me pudieras ayudar.

Former Member
0 Kudos

Quiero entender que lo que falta es en el último conjunto de resultados, que te muestre la sumatoria de Cantidad y Costo pero agrupado por ItemName. Si es así, intenta así el query:

declare @FechaIni date; --> declarar la variable como la tienes.

declare @FechaFin date; --> declarar la variable como la tienes.

declare @Planta nvarchar(100); --> declarar la variable como la tienes.

set @FechaIni = '20140101'; --> Asignas tus valores.

set @FechaFin = '20140131'; --> Asignas tus valores.

set @Planta = 'Planta01'; --> Asignas tus valores.

with TablaDatos (nombre, nombre_rubro, orden, cantidad, costo)

as

(

------------------ Aquí INICIA tu query ------------------

SELECT  nombre, nombre_rubro, orden,  sum( cantidad)[cantidad] , sum(costo) [costo]

-------------Query 1 ---------------------------

from v_inventario_inicial

where docdate  < @FechaIni

and codigoplanta =@Planta

group by  nombre, nombre_rubro,orden

union all

-----------Query 2-------------------------------

SELECT  nombre, nombre_rubro,orden,  sum( cantidad)[cantidad] , sum(costo) [costo]

from v_compras_consumos

where docdate between @FechaIni and @FechaFin

and codigoplanta= @Planta

group by  nombre, nombre_rubro,orden

union all

-------------Query 3 ------------------

SELECT  dscription, [NOMBRE Rubro],RUBRO,  sum( expr1) [cantidad], sum(expr2) [costo]

from v_consumos2

where Docdate between @FechaIni and @FechaFin

and U_Cod_Planta= @Planta

Group By  dscription,[nombre Rubro], RUBRO

------------------ Aquí FINALIZA tu query ------------------

)

select 'Detalle' [TipoDato], * from TablaDatos /* Aquí te mostrará la información del query como lo tienes actualmente.*/

union all

select 'Total' [TipoDato], nombre, nombre_rubro, '', sum(cantidad) cantidad, sum(costo) costo from TablaDatos group by nombre, nombre_rubro /* Aquí te muestra la sumatoria de la columna Cantidadd y Costo. */

order by 2,1 /* Ordenar por ItemName y por columna Tipo */

La columna Cantidad y Costo quiero pensar que tus tablas ya tienen sus signos negativos para las salidas de inventario, de lo contrario tu query solo va estar incrementando estos 2 campos aún cuando sean salidas de inventario.

La tabla v_inventario_inicial y las demás así se llaman o estás poniendo nombres ficticios en lugar de nombres de tablas de SAP B1?

Si es no es como lo necesitas, puedes poner una tabla en la que se muestre cómo quieres la salida de información?

Saludos,

JC.

Former Member
0 Kudos

Gracias Juan Carlos con respecto a tus preguntas en efecto el signo negativo ya esta colocados en los valor desde las vistas, y con respecto al nombre las tablas no así se llaman las tablas.

Gracias por ayuda voy a probar y te cuento como me fue.

Saludos y muy agradecido por tu ayuda.

Former Member
0 Kudos

Hola Juan Carlos perdona pero hasta hoy pude probar el query pero fijate que me arroja un error

el error el es:

Msg 2715, Level 16, State 3, Line 48

Columna, parámetro o variable nº 2: no se encuentra el tipo de datos date.

El parámetro o la variable '@FechaFin' tiene un tipo de datos no válido.

Msg 2715, Level 16, State 3, Line 48

Columna, parámetro o variable nº 3: no se encuentra el tipo de datos date.

El parámetro o la variable '@FechaIni' tiene un tipo de datos no válido

sobre entiendo que las fechas no las encuentra en la tabladatos como podria colocarle fechas a esta tabla.

de agradezca tu ayuda y tu tiempo.

Saludos

Former Member
0 Kudos

Juan Carlos te agradezco tu ayuda me fue de gran ayuda ya solucione el problema que tenia.

Estoy muy agradecido por ayuda.

Que tengas un excelente dia.

Saludos Cordiales

Former Member
0 Kudos

Estimado pero no coloca cual fue la solucion del caso, le comento que tengo un caso silmila pero le quiero colocar parametros para que funciones con las variables que indica pero no me funciona aun pero trataré de solventarlo.

Answers (0)