Sei sulla pagina 1di 6

--FUNCIONES QUE RETORNAN TABLAS

--1)Crear una funcion que retorne una tabla con los sgtes campos:

--codprod,nomprod,nommarc y precio teniendo como imnput la funcion el nombre de la marca.

create function lista(@marca varchar(30))

returns table

as

return (select CODPROD "codigo", NOMPROD "NOMBRE",NOMMAR "MARCA", PRECIO FROM


PRODUCTOS P,MARCAS M WHERE M.CODMAR=P.CODMAR AND NOMMAR

LIKE @marca)

GO

SELECT *FROM lista('TOSHIBA') order by PRECIO DESC

GO

SELECT * FROM lista('I%')

GO

SELECT * FROM lista('%') ORDER BY MARCA ASC ,PRECIO DESC

GO

--2)CREAR UN AFUNCION QUE RECIBA COMO IMPUT EL NOMBRE DE UN DISTRITO Y RETORNE


UNA TABLA CON

--LAS SGTES COLUMNAS: CODPER,NOMPER,DNI,DIRECCION Y NOMBRE DE DISTRITO.

create function LISTA2(@DISTRITO varchar(30))

returns table

as

return (select CODPER "codigo", NOMPER "NOMBRE",DNI,DIREC,NOMDIST FROM PERSONAL


P,DISTRITOS D WHERE P.CODDIST= D.CODDIST AND NOMDIST

LIKE @DISTRITO)
GO

SELECT *FROM lista2('ATE') ORDER BY NOMBRE ASC

GO

SELECT * FROM lista2('C%') ORDER BY NOMDIST ASC ,NOMBRE DESC

GO

SELECT * FROM lista2('%') ORDER BY NOMDIST DESC ,NOMBRE ASC

GO

--3)CREAR UNA FUNCIONQ RECIBA COMO IMPUT nombre de UN PERSONAL Y RETORNE UNA
TABLA CON LOS SGUTES CAMPO:

--CODCOMP ,NOMCLI,NOMPER,FECHACOMPROBANTE DE TODOS LOS COMPROBANTES EMITIDOS


POR ESE PERSONAL

alter function LISTA3(@PERSONAL varchar(30))

returns table

as

return (select CODCOMP "CODIGO", NOMCLI "CLIENTE",NOMPER "PERSONAL",FECHACOMP


"FECHA" FROM COMPROBANTE_CABECERA CC,CLIENTES C,PERSONAL P

WHERE CC.CODCLI =C.CODCLI AND CC.CODPER=P.CODPER AND NOMPER LIKE @PERSONAL )

GO

SELECT *FROM lista3('JAVIER GUTIERREZ')

GO

SELECT * FROM lista3('%') ORDER BY PERSONAL ASC

GO

SELECT * FROM lista3('C%') ORDER BY PERSONAL ASC

GO
--4)CREAR UNA FUNCION Q RECIBA COMO IMPUT EL NOMCAR, Y DEVCUELVA UNA TABLA CON
LOS SGTES CAMPOS:

--NOMCAR,NUMERO DE PERSONAS Q TIENEN DICHO CARGO, SUMA DE SUELDOS POR CARGO Y


PROMEDIO DE SUELDO POR CARGO

CREATE function LISTA4(@CARGO varchar(30))

returns table

as

return (select NOMCAR "NOMBRE", COUNT(CODPER)"NUMEROS DE PERSONAL",SUM(SUELDO)


"TOTAL DE SUELDO",AVG(SUELDO)"PROMEDIO" FROM CARGOS C ,PERSONAL P

WHERE C.CODCAR=P.CODCAR AND NOMCAR LIKE @CARGO GROUP BY NOMCAR )

GO

SELECT *FROM lista4('ANALISTA')

GO

SELECT * FROM lista4('%') ORDER BY NOMBRE ASC

GO

SELECT * FROM lista4('V%') ORDER BY NOMBRE ASC

GO

--5)CREAR UN FUNCION QUE RETORNE EN UNA TABLA EL CODIGO ,NOMBRE,FECHA


NACIMIENTO,EDAD DEL PERSONL QUE

--HAYA NACIDO ENTRE UNA FICHA INICIAL Y UNA FICHA FINAL

ALTER function LISTA5(@F1 DATE, @F2 DATE)

returns table

as
return (select NOMPER "NOMBRE", FNAC "FECHA" ,(YEAR(GETDATE())-YEAR(FNAC))"EDAD" FROM
PERSONAL

WHERE FNAC BETWEEN @F1 AND @F2)

GO

SELECT *FROM lista5('05/05/1991','10/05/2000')

GO

SELECT * FROM lista5('%')

GO

SELECT * FROM lista4('V%') ORDER BY NOMBRE ASC

GO

--crear un afuncion q retorne el numero d productos por cada marca

create function LISTA6()

returns table

as

return(select nommar "nombre", COUNT(CODPROD)"NUMEROS DE PRODUCTO" FROM


PRODUCTOS P,MARCAS M WHERE P.CODMAR=M.CODMAR GROUP BY NOMMAR)

GO

SELECT * FROM lista6()

GO

--CREAR UNA FUNCION Q MUESTRE EL NUMERO DE COMPROBANTE DE PAGOS Q TIENE UN


DETERMINADO NOBRE D PRODUCTO
ALTER FUNCTION LISTA7(@PRODUCTO VARCHAR(30))

RETURNS TABLE

AS

RETURN(SELECT NOMPROD "PRODUCTO", COUNT (CODCOMP)"NUMERO DE COMPROBANTE"


FROM PRODUCTOS P , COMPROBANTE_DETALLE CD WHERE P.CODPROD=CD.CODPROD AND
NOMPROD LIKE @PRODUCTO GROUP BY NOMPROD )

GO

SELECT * FROM LISTA7('%')

GO

--CRAER UNA FUNCION Q RETORNE UNA TABLA CON L NRO DE PRODCUTOS Q PROVEE

ALTER function LISTA9(@nomprov varchar(30))

returns table

as

return (select NOMPROV "nombre",count(codprod)"nro,productos"

from Proveedores p,abastecimiento a

where p.codprov=a.codprov and nomprov like @nomprov

group by nomprov)

--ejecutar

select *from LISTA9('%')order by 1 desc

select *from LISTA9('J%')order by 1 desc

--CREAR UNA FUNCION Q RETORNE UNA TABLA CON LOS SGTES CAMPOS CODCLI, NOMCLI, RUC
DEL CLIENTE Y NRO. DE COMP RECIBIDOS POR CADA

--CLIENTE.
CREATE FUNCTION LISTA10(@CLIENTE VARCHAR(30))

RETURNS TABLE

AS

RETURN (SELECT C.CODCLI "CODIGO",NOMCLI "CLIENTE",RUC,COUNT(CODCOMP)


"NRO.COMPROBANTES" FROM CLIENTES C, COMPROBANTE_CABECERA CD

WHERE C.CODCLI=CD.CODCLI AND NOMCLI LIKE @CLIENTE GROUP BY C.CODCLI,NOMCLI,RUC)

GO

select *from LISTA10('%')order by 1 desc

--CREAR UNA FUNCION Q RETORNE EL MAYOR NUMERO D COMPROBANTES EMITIDOS POR UN


PERSONAL

CREATE FUNCTION LISTA11()

RETURNS INT

AS

RETURN (SELECT

Potrebbero piacerti anche