Цитата(BiTL @ 26.10.2007, 15:56)

Альтернатива тому что написал depoint
Мы другдруга поняли... Потому не будем вдоватся в подробности...
Код
--select * from fnTarifkaLastLS ('0003242',604)
CREATE function fnTarifkaLastLS
(@ls nvarchar(7),@Per_PRas int)
--if @auto=0 then read @Per_PRas else определяет сам
-- typ =0 все 1 до 2 после
returns @tab table( ist varchar (10) ,
kor int ,
Per_Kor int ,
Per_PRas int ,
Per_Ras int ,
kod int ,
ls nvarchar (7),
SaldoBeg_tek float ,
SaldoEnd float ,
R int ,
SPO float ,
Skidka float ,
SR float ,
Debet float ,
Ostb250lg float ,
Ostb250 float ,
Ostm250lg float ,
Ostm250 float ,
Rb250lg int ,
Rb250 int ,
RBesCh int ,
Rm250lg int ,
Rm250 int ,
tarif float ,
tariflg float ,
tarifsoc float ,
tarifsoclg float ,
norma int ,
normasoc int ,
Idtarif int ,
tarifname nvarchar (100),
i int ,
Id_Bank1 int ,
Koef int,
RR int,
SRR float,
SaldoEndR float )
as
begin
declare
--@ls nvarchar(7),
@dat datetime,
--@Per_PRas int,
@Per_Ras int,
@Prinadleg int
--set @ls='0003242'
declare cur cursor for
SELECT distinct ls, dbo.fnInttoDate(Per_Ras) as DPO, Per_Ras,Per_PRas,1 as Prinadleg
FROM (SELECT ISNULL
((SELECT MAX(dbo.fnDateNowToInt(DatIzm)) AS P
FROM tab_Ras t
WHERE (t.LS = tab_Ras.ls) AND (dbo.fnDateNowToInt(t.DPO) = dbo.fnDateNowToInt(DPO))
AND (dbo.fnDateNowToInt(DatIzm) < dbo.fnDateNowToInt(dbo.tab_Ras.DatIzm)
--and DatIzm<(select max(t.DatIzm) d from tab_ras t where ls=@ls
)),0) AS Per_Kor,
dbo.fnDateNowToInt(tab_Ras.DatIzm) AS Per_PRas,
dbo.fnDateNowToInt(tab_Ras.DPO) AS Per_Ras, tab_Ras.SaldoBegin, tab_Ras.SaldoEnd, tab_Ras.Kor, tab_Ras.KOP, tab_Ras.Child, tab_Ras.Parent,
tab_Ras.kod, tab_Ras.DatIzm, tab_Ras.LS
FROM tab_Ras INNER JOIN
tab_Abon ON tab_Ras.LS = tab_Abon.LS
WHERE tab_Ras.LS=@ls and (dbo.fnDateNowToInt(tab_Ras.DatIzm) = @Per_PRas) ) t
--order by ls ,Per_Ras
WHERE (LS =@ls) order by Per_Ras,Per_PRas
OPEN cur
FETCH NEXT FROM cur into @ls,@dat,@Per_Ras,@Per_PRas, @Prinadleg
WHILE @@FETCH_STATUS = 0
BEGIN
insert into @tab
SELECT ist, kor, Per_Kor, Per_PRas, Per_Ras, kod, ls, SaldoBeg_tek, SaldoEnd, R, SPO, Skidka, SR, Debet, Ostb250lg * Koef AS Ostb250lg,
Ostb250 * Koef AS Ostb250, Ostm250lg * Koef AS Ostm250lg, Ostm250 * Koef AS Ostm250, Rb250lg, Rb250, RBesCh, Rm250lg, Rm250, tarif, tariflg,
tarifsoc, tarifsoclg, norma, normasoc, Idtarif, tarifname, i, Id_Bank1, Koef, Rb250lg + Rb250 + Rm250lg + Rm250 AS RR,
(Ostb250lg + Ostb250 + Ostm250lg + Ostm250) * Koef AS SRR, SaldoBeg_tek + SR - SPO AS SaldoEndR
FROM dbo.fnTarifkaLast(@ls,@dat,@Per_PRas,0,0) f
FETCH NEXT FROM cur into @ls,@dat,@Per_Ras,@Per_PRas, @Prinadleg
END
CLOSE cur
DEALLOCATE cur
return
end
"А вы" альтернативы, танцы, музыка....