0
CREATE FUNCTION [dbo].[SuiviRupture](@CodeArticle [nvarchar](13),@CodeSite [nvarchar](5) ,@CodeStructure [nvarchar](13))
RETURNS @calcul TABLE
(
[Code Article] [nvarchar](13),
[Code Structure][nvarchar](13) NULL,
[Code Site][nvarchar](5) NULL,
CAMOY float,
QTEMOY float
)
AS
BEGIN
DECLARE @Temp TABLE
(
[datecol] date,
[Code Article] [nvarchar](13),
[Prix de vente TTC] [nvarchar](15) NULL,
[Code Site][nvarchar](5) NULL,
[Code Structure][nvarchar](13) NULL,
Quantité float ,
rn int
);
insert into @Temp
([datecol],[Code Article],[Prix de vente TTC],[Code Site],[Code Structure],Quantité,rn)
select t1.[datecol],t1.[Code Article],t1.[Prix de vente TTC],t1.[Code Site],t1.[Code Structure],t1.Quantité ,rn
from [Vente] t1
inner join (select distinct [datecol],[Code Article],[Code Structure],[Code Site],
row_number() over(Partition by [Code Article],[Code Structure],[Code Site] order by [datecol]desc) as rn
from (select distinct [datecol],[Code Article],[Code Structure],[Code Site]
from [Vente] t2
where promo = 0
and ([Code Article] is not null) and ([Code Structure] is not null) and ([Prix de Revient] is not null)and [Code Article]= @CodeArticle and [Code Site][email protected] and [Code Structure][email protected]
)g
) a
on a.datecol=t1.datecol
and t1.[Code Article] = a.[Code Article]
and t1.[Code Structure]=a.[Code Structure]
and t1.[Code Site]=a.[Code Site]
where promo = 0 --and t1.[Code Article]= ' 020130180'
and rn <= 28
INSERT @calcul
select
[Code Article]
,[Code Structure]
,[Code Site]
, sum(convert(float,Quantité))/count(distinct [datecol]) as QTEMOY
, sum(convert(float,[Prix de vente TTC]))/count(distinct [datecol]) AS CAMOY
from @Temp
where [Code Article]= @CodeArticle and [Code Site][email protected] and [Code Structure][email protected]
group by
[Code Article],[Code Structure]
,[Code Site]
RETURN;
END;
GO
當我執行下面的查詢,花了太長的時間,要執行小時 如何優化呢?
select t1.[Code Article],t1.[Code Site],t1.[Code Structure], u.QTEMOY,u.CAMOY
from V_distinctVente t1 With(nolock)
Cross apply dbo.[SuiviRupture](t1.[Code Article],t1.[Code Site],t1.[Code Structure]) u
嘗試查看實際執行計劃並查看是否有任何異味。 –
您已經提出了一個可能涉及'V_distinctVente'視圖的問題,但未提供該視圖的定義。因此,除非您提供定義和索引,否則您的問題是無法回答的 –