我的老板今天有一个愿景,就是彻底改变我几乎完整的程序的设计。 所以这里是我目前使用的查询显示产品组中的零件编号,其中有帕累托位置(帕累托是一个联盟,例如1-100,最畅销的零件)。
我的老板希望的是用于帕累托历史的额外列。
这是当前的代码:
ALTER PROCEDURE [dbo].[MyParetoConfirmed]
@pgParam varchar(255)
AS
SELECT
i.pg,
dbo.OldParetoAnalysis.Pareto,
i.keycode,
i.sales6months,
a.LostSales6Months,
dbo.NewParetoAnalysis.Pareto
FROM
OPENQUERY(SACBAUTO, 'SELECT
dbo.product.Keycode,
dbo.iLines.Pg,
dbo.product.pg as ppg,
SUM(COALESCE(dbo.iLines.Qty, 0)) as sales6months,
dbo.iLines.Prefix
FROM
Autopart.dbo.product
LEFT OUTER JOIN
Autopart.dbo.ilines
ON
dbo.product.keycode = dbo.ilines.part
AND ([datetime] > dateadd(month, -6, getdate()) OR [datetime] is null )
WHERE
(dbo.iLines.Prefix = ''i'' OR dbo.iLines.Prefix is null)
group by
dbo.ilines.pg,
dbo.product.keycode,
dbo.ilines.prefix,
dbo.product.pg
order by sales6months desc') i
RIGHT JOIN
dbo.OldParetoAnalysis
on
i.keycode collate SQL_Latin1_General_CP1_CI_AS = dbo.OldParetoAnalysis.Part
AND (i.pg = @pgParam or (i.pg is null AND i.ppg = @pgParam))
INNER JOIN
dbo.NewParetoAnalysis
ON
dbo.OldParetoAnalysis.Part collate SQL_Latin1_General_CP1_CI_AS = dbo.NewParetoAnalysis.Part
LEFT JOIN
OPENQUERY(SACBAUTO, 'SELECT
dbo.product.Keycode,
dbo.aLines.Pg,
SUM(COALESCE(dbo.aLines.Qty, 0)) as lostsales6months,
dbo.aLines.Prefix
FROM
Autopart.dbo.product
LEFT OUTER JOIN
Autopart.dbo.alines
ON
dbo.product.keycode = dbo.alines.part
AND ([datetime] > dateadd(month, -6, getdate()) OR [datetime] is null )
WHERE
(dbo.aLines.Prefix = ''d'' OR dbo.aLines.Prefix is null)
group by
dbo.alines.pg,
dbo.product.keycode,
dbo.alines.prefix
order by lostsales6months desc') a
ON
dbo.NewParetoAnalysis.Part collate SQL_Latin1_General_CP1_CI_AS = a.keycode
WHERE(i.pg = @pgParam or (i.pg is null AND i.ppg = @pgParam) AND dbo.NewParetoAnalysis.Pareto is not null)
GROUP BY
i.pg,
dbo.OldParetoAnalysis.Pareto,
i.keycode,
i.sales6months,
a.LostSales6Months,
dbo.NewParetoAnalysis.Pareto
ORDER BY
i.sales6months Desc
我需要的是一个名为paretoMain的新表,它保留了帕累托历史:
字段是:Pg,Part,Pareto,PareoidID,date。
目前有20K部分具有唯一的ID为1到6,我需要获得该peroid的pareto和pg,就像我的代码已经做的那样(只是没有获得peroid)我需要为每个执行6次符号ID 1-6。 我认为它可能是多重选择语句或嵌套,但说实话,我无法解释查询将有多大以及需要多少。
这方面的帮助会很棒!
非常感谢!
澄清每个选择将从新表中获得帕累托。每个选择将获得pareto和alias作为pareto1,pareto2 .....等 因此查询需要选择并命名6次仍然使用我当前拥有的查询
答案 0 :(得分:0)
好的解决方案是将表本身更改为单独的表。并通过观点加入他们。