SQL Server - COMO HACER MAS DE UN SELECT EN UNA FUNCION

 
Vista:
sin imagen de perfil

COMO HACER MAS DE UN SELECT EN UNA FUNCION

Publicado por Francine (4 intervenciones) el 17/08/2022 06:11:59
Hola , estoy creando este ejercicio:
Calcular suma total de $ comprado por idcliente y por año de factura.
oviamente ya tengo esas tablas enlazadas , eh echo este codigo que lo unico que me podria calcular es la suma pero pasando unicamente solo un id del cliente , como podria obtener el de todos y asi mismo hacer un selec de la fecha??

CODIGO:

create OR REPLACE function sumarTotalFactura(pidcliente in cliente.idcliente%type)
return number
is

vsumaTotal number(8,2);

BEGIN

SELECT SUM(f.TOTAL)
INTO vsumaTotal
from FACTURA f
where f.idcliente=pidcliente;
DBMS_OUTPUT.PUT_LINE('Suma total: ' || vsumaTotal);
return vsumaTotal;
end;


declare vsumaTotal number(8,2);
begin
vsumaTotal := sumarTotalFactura(1);
end;
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 Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

COMO HACER MAS DE UN SELECT EN UNA FUNCION

Publicado por Isaias (4558 intervenciones) el 17/08/2022 16:16:15
¿Cual es tu motor de base de datos y porque lo quieres hacer mediante una funcion?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

COMO HACER MAS DE UN SELECT EN UNA FUNCION

Publicado por Francine (4 intervenciones) el 17/08/2022 17:24:22
PORQUE ES UN DEBER Y ME LO PIDIERON DE ESA MANERA . EL motor es ORACLE - SQL DEVELOPER
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

COMO HACER MAS DE UN SELECT EN UNA FUNCION

Publicado por Claudio Quezada (2 intervenciones) el 17/08/2022 17:43:25
En el supuesto que sea tu motor sea MS-SQL, yo lo haría así

1
2
3
4
5
6
7
8
SELECT
		f.idcliente,
		YEAR(f.FechaEmision) AS Anio,
		SUM(f.TOTAL) OVER(PARTITION BY f.idcliente, YEAR(f.FechaEmision)) AS Total
from
		FACTURA f
where
		f.idcliente=pidcliente;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

COMO HACER MAS DE UN SELECT EN UNA FUNCION

Publicado por Francine (4 intervenciones) el 17/08/2022 19:53:07
Gracias , pero debo usar funciones ya que es PROGRAMACION PLSQL
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

COMO HACER MAS DE UN SELECT EN UNA FUNCION

Publicado por Isaias (4558 intervenciones) el 18/08/2022 16:20:22
Entonces cámbiate de foro, estas en SQL SERVER
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

COMO HACER MAS DE UN SELECT EN UNA FUNCION

Publicado por Francine (4 intervenciones) el 19/08/2022 03:08:59
entonces le falta conocimiento PLSQL.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

COMO HACER MAS DE UN SELECT EN UNA FUNCION

Publicado por Isaias (4558 intervenciones) el 01/09/2022 18:31:55
Busca el foro correspondiente

https://community.oracle.com/tech/developers/categories/espanol-disc
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

COMO HACER MAS DE UN SELECT EN UNA FUNCION

Publicado por Claudio Quezada (2 intervenciones) el 31/08/2022 00:48:25
¿Esto servirá?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
CREATE OR REPLACE FUNCTION sumarTotalFactura
(
	p_PIdCliente	NUMBER
)
	RETURN @DatosCuentaTag IS
BEGIN TABLE
		(
			idcliente
			end;		INT,
			Anio		INT,
			Total		INT
		)
AS BEGIN
 
	-- SQLINES LICENSE FOR EVALUATION USE ONLY
	INSERT INTO @DatosCuentaTag
	SELECT
			f.idcliente,
			EXTRACT(YEAR FROM f.FechaEmision) AS Anio,
			SUM(f.TOTAL) OVER(PARTITION BY f.idcliente, YEAR( FROM dual;f.FechaEmision)) AS Total
	FROM
			FACTURA f
	WHERE
			f.idcliente = @PIdCliente;
 
	RETURN
END

Como no se PLSQL lo hice en MS-SQL y lo pasé por esta web: https://www.sqlines.com/online

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar