У моего босса сегодня есть видение, чтобы полностью изменить дизайн моей почти полной программы. Итак, вот запрос, который я использую в настоящее время для отображения номеров деталей в группе продуктов с парето-позицией (pareto - это лига, например, 1-100, наиболее продаваемые части).sql query возможно вложенные выбирает
Для чего нужен мой босс - дополнительные столбцы, используемые для истории парето.
вот текущий код:
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, часть, Парето, PareoidID, дата ,
В настоящее время есть 20K частей с уникальной идентификацией Peroid ID 1- 6, мне нужно получить парето для этого пероида и pg, как мой код уже делает (просто не получает peroid), и мне нужно сделать это 6 раз для каждый peroid ID 1-6. Я думаю, что это могут быть множественные заявления выбора или гнезда, но, честно говоря, я не могу разорвать голову вокруг того, насколько большой будет запрос и сколько нужно.
Помощь на этом будет замечательно!
Большое спасибо!
Чтобы уточнить каждый выбор, вы получите парето из новой таблицы. каждый выбор будет получать парето и псевдоним как pareto1, pareto2 ..... и т. д.
Таким образом, запрос должен выбрать и назвать 6 раз по-прежнему использовать запрос, который у меня есть в настоящее время