tengo esta funcion
create function ym_pos
(@posi numeric(13), @tipo char(1))
returns varchar(8)
begin
declare @vari as varchar(8)
set @vari = ''
if @tipo='S'
set @vari= cast(cast(substring(str(@posi),3,2) as
int)*100+cast(substring(str(@posi),5,2) as int) as varchar(8))
if @tipo='Y'
set @vari='20'+substring(str(@posi),3,2)
if @tipo='M'
set @vari=substring(str(@posi),5,2)
return @vari
end
y lo utilizo asi
select count(*), area,Mes,yea from (
select 'EA' as area, dbo.ym_pos(mae_posicion,'M')as Mes
,dbo.ym_pos(mae_posicion,'Y') as anno
from expomawb
where dbo.ym_pos(mae_posicion,'S') between 412 and 503 ) a
group by area,Mes,anno
select 'EA' as area, dbo.ym_pos(mae_posicion,'M')as Mes
,dbo.ym_pos(mae_posicion,'Y') as anno
into #a from expomawb
where dbo.ym_pos(mae_posicion,'S') between 412 and 503
select count(*), area, Mes, anno from #a
group by area, Mes, anno
drop table #a
En la Primera consulta el campo mes y anno me repiten el mismo valor ( el
del 1 group by, osea mes)
en la segunda opcion de consulta, uso un temporal, y sin embargo aqui si me
trae correctamente los valores
¿Porque se comporta asi el sql ?
-
Lic. Flavio A. Dellarupe
Visual Fox Developer
Bs.As.-Argentina
Leer las respuestas