Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Sql dynamic
Message
De
17/10/2011 17:55:44
 
 
À
17/10/2011 16:34:55
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Titre:
Versions des environnements
Visual FoxPro:
VFP 9 SP1
OS:
Windows XP SP2
Network:
Windows 2003 Server
Database:
MS SQL Server
Application:
Desktop
Divers
Thread ID:
01526661
Message ID:
01526700
Vues:
39
WHY THIS STORE PROCEDURE I DO NOT RETURN DATA AS YOU PASS PARAMETER'''20111017 ', '2011 ','','','' IF THERE DATA
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author:		<jose manuel ramirez>
-- Create date: <17-10-2011>
-- =============================================
CRETAE PROCEDURE [dbo].[P_ANALISIS]@fecha1 varchar(10),@fecha2 varchar(10),@escolar int,@tipmov varchar(2),@nivel int,@dias int,@cuota int
AS
BEGIN
DECLARE @ParmDefinition NVARCHAR(2000),@condi varchar(2000),@sql nvarchar(4000)
SET @ParmDefinition = '@fech1 varchar(10),@fech2 varchar(10),@escola int,@tipmo char(2),@nive int,@dia int,@cuot int'

set @sql='select rtrim(F.apellidos) as apellidos,
SUM(M.balance) as balance,SUM(M.cuota) as monto,SUM(m.recargo) as recargo,0 as anticipo,
descuentos=sum(CASE WHEN (@fecha1>m.fechadescuento) THEN 0 else (M.descuento+M.descuento2) END),
dias30=sum(CASE WHEN (datediff(dd,m.fechacuota,@fecha1)<=30 and @fecha1>=m.fechacuota) THEN m.balance else 0 END),
dias45=sum(CASE WHEN (datediff(dd,m.fechacuota,@fecha1)> 30 and  datediff(dd,m.fechacuota,@fecha1)<= 45)  THEN m.balance else 0 END),
dias60=sum(CASE WHEN (datediff(dd,m.fechacuota,@fecha1)> 45 and  datediff(dd,m.fechacuota,@fecha1)<= 60)  THEN m.balance else 0 END),
dias75=sum(CASE WHEN (datediff(dd,m.fechacuota,@fecha1)> 60 and  datediff(dd,m.fechacuota,@fecha1)<= 75)  THEN m.balance else 0 END),
dias90=sum(CASE WHEN (datediff(dd,m.fechacuota,@fecha1)> 75 and  datediff(dd,m.fechacuota,@fecha1)<= 90)  THEN m.balance else 0 END),
dias91=sum(CASE WHEN (datediff(dd,m.fechacuota,@fecha1)>=91) THEN m.balance else 0 END)
from cuotas m,familias f 
where M.idfamilia=f.idfamilia and M.balance>0 group by M.idfamilia,F.apellidos'

IF @fecha1 != ''
        SET @condi = @condi +'   AND m.fechacuota>= @fecha1'

IF @fecha2 != ''
        SET @condi = @condi +'   AND m.fechacuota<= @fecha2'

IF @escolar != ''
        SET @condi = @condi +'   AND m.escolar= @escolar'

IF @tipmov != ''
        SET @condi = @condi +'   AND m.tiptra= @tipmov'

IF @nivel != ''
        SET @condi = @condi +'   AND m.escolar= @escolar'

IF @dias != ''
        SET @condi = @condi +'   AND m.escolar= @escolar'

IF @cuota != ''
        SET @cuota = @condi +'   AND m.escolar= @escolar'


set @sql=@sql+@condi

EXECUTE sp_executesql @sql,@ParmDefinition,@fecha1,@fecha2,@escolar,@tipmov,@nivel,@dias,@cuota
Jose Manuel Ramirez
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform