Dynami c Pivot SQL Запрос для получения номеров финансовых недель - PullRequest
0 голосов
/ 06 мая 2020

Ниже приведен код, который я создал для расчета частоты отказов определенного c продукта.

  • КОЛИЧЕСТВО ASU - Общее количество продуктов, на которые распространяется гарантия

  • Dispatch QTY - это общий отказ продукта

  • Fiscal_Week - неделя, в которую продукт вышел из строя

Если мне нужно получить показатель отказов, который обозначается как MDR

Мне нужно разделить количество отправлений / количество ASU

В коде я использовал следующее

cast(isnull([Dispatch QTY],0) as float)/Cast(isnull([ASU QTY],0) as float) * 100 as 'MDR'

Мне нужно следующее Из вывода

  1. Dynami c Сводный код по финансовой неделе в виде столбцов.

Полный код вытащить Failure Rate

select @pivot = coalesce (@pivot + ',','')+ QUOTENAME(a.FISCAL_WEEK)
from ASU a left Join dispatch b
on
a.FISCAL_WEEK = b.FISCAL_WEEK

--Dynamic SQL Query
Set @SQLQUERY = N'Select '+@Pivot+' from ASU a left Join dispatch b
on
a.FISCAL_WEEK = b.FISCAL_WEEK
Pivot(Sum(isnull([ASU QTY],0)
,Sum(isnull([Dispatch QTY],0)
For [a.FISCAL_WEEK] in ('+@Pivot+')) as P'

Exec sp_executesql @SQLQUERY

1 Ответ

0 голосов
/ 06 мая 2020

Вам не нужна динамика c SQL. Поскольку вы не предоставили образцы данных, я помещаю псевдокод, который может служить ссылкой для вашей реализации.

SELECT a.Fiscal_Week, FY1,FY2...
(d.DispatchQty/NULLIF(a.AsuQty,0)) * 100 AS MDR
FROM ASU as a
LEFT OUTER JOIN Dispatch as d
ON a.Fiscal_Week = d.Fiscal_Week
PIVOT
(
AVG(MDR)
FOR Fiscal_Week IN ([FY1],[FY2]...)
) as P
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...