Demand History Outlier Script
IF NOT EXISTS ( SELECT * FROM sys.schemas WHERE name = N'ADX' ) EXEC('CREATE SCHEMA [ADX]');
IF NOT EXISTS ( select * from INFORMATION_SCHEMA.tables where table_schema = 'ADX' and table_name = 'DemandHistoriesUpdates' )
Begin
CREATE Table ADX.DemandHistoriesUpdates (
Date datetime,
Days int,
SelectionMultiplier int,
QuantityMultiplier int,
Locations varchar(MAX),
ServerName varchar(50),
DatabaseName varchar(50),
Id int,
PartNumber nvarchar(50),
Revision nvarchar(10),
Location nvarchar(20),
PartDetailsADU decimal(18,5),
PartHistADU decimal(18,5),
OrderDate datetime,
OrigQuantity decimal(18,5),
NewQuantity decimal(18,5)
)
End
Declare @days as int = -8;
Declare @selectionMultiplier as int = 4;
Declare @quantityMultiplier as int = 1;
Declare @locations as varchar(MAX) = '';
update DemandHistories
set Quantity = (coalesce(ph.AverageDailyUsage,pd.AverageDailyUsage)*@quantityMultiplier)
Output
GETDATE() [Date]
,@days [Days]
,@selectionMultiplier [SelectionMultiplier]
,@quantityMultiplier [QuantityMultiplier]
,@locations [Locations]
,@@SERVERNAME [ServerName]
,db_name() [DatabaseName]
,deleted.id [Id]
,p.PartNumber [PartNumber]
,p.Revision [Revision]
,p.Location [Location]
,pd.AverageDailyUsage [PartDetailsADU]
,ph.AverageDailyUsage [PartHistADU]
,deleted.OrderDate [OrderDate]
,deleted.Quantity [OrigQuantity]
,inserted.Quantity [NewQuantity]
INTO ADX.DemandHistoriesUpdates
FROM DemandHistories dh
join parts p on p.id=dh.id
join partdetails pd on pd.id=dh.id
left join (select
ph.PartNumber,ph.Revision,ph.Location,ph.AverageDailyUsage
from PartHistories ph
inner join
(select
partnumber, Revision, Location,max(date) [max_date]
from PartHistories
group by partnumber, Revision, Location
) md on md.PartNumber = ph.PartNumber and md.Revision=ph.Revision and md.Location=ph.Location and md.max_date=ph.date
) ph on ph.PartNumber=p.PartNumber and ph.Revision=p.Revision and ph.Location=p.Location
where 1=1
and (len(@locations)=0
or
p.Location in (select value from STRING_SPLIT(@locations,','))
)
and dh.OrderDate > dateadd(day,@days,getdate())
and (coalesce(ph.AverageDailyUsage,pd.AverageDailyUsage)*@selectionMultiplier) < dh.Quantity
and (coalesce(ph.AverageDailyUsage,pd.AverageDailyUsage)*@selectionMultiplier) > 0
Last updated