В настоящее время мы пытаемся получить данные, которые могут показать нам - какие детали были отправлены в предыдущем сервисе, и были ли они такими же или добавлены дополнительные детали.
Я классифицирую:
Ser1 имеет материнскую плату, документацию, а Ser 2 имеет только материнскую плату - та же часть отправки Ser 1 имеет материнскую плату, документацию, а Ser 2 имеет материнскую плату, дисплей, жесткий диск - резервные части Ser 1 имеет материнскую плату, документацию и Ser 2 имеет ЖК-дисплей, жесткий диск - неИсходный заказ
Для этого я использую следующий CTE:
,CTE4 as
(
Select distinct *
, case when [Dispatch_Part_Commodity_List] = ltrim(Rtrim([Original Order]))
then 1 else 0 end as'Same Part Repeat'
, case When isnull([Dispatch_Part_Commodity_List], '') = '' or isnull([Original Order], '') = '' then 1 else 0 end as 'Labor Only Repeat'
, Case When [Dispatch_Part_Commodity_List] != ltrim(Rtrim([Original Order])) then 1 else 0 end as 'Non Original Order'
, Case When [Dispatch_Part_Commodity_List] like Concat ('%',ltrim(Rtrim([Original Order])),'%') then 1 else 0 end as 'Standby Flag'
from Dispatch_Map
where Row_Count = 1
)
Но я не получаю желаемый результат:
Текущий сценарий отображается как:
Ser 1 имеет материнскую плату, документацию, а Ser 2 имеет материнскую плату, дисплей, жесткий диск - запасные части Ser 1 имеет материнскую плату, документацию, а Ser 2 имеет только материнскую плату - отправка той же детали
классифицируетсякак Неоригинальный заказ
Можете ли вы помочь в получении правильного результата.
Действительный код прилагаетсяздесь для справки.Некоторые из ссылок не указаны из-за политики нашей компании.
With CTE1 As
(
SELECT distinct
c.[FISCAL_YEAR]
,c.[FISCAL_Quarter]
,c.[FISCAL_Month]
,c.[FISCAL_Week]
,a.[SVC_DSPCH_ID]
,f.[B2C_FLG]
,f.[B2D_FLG]
,d.[RGN_DESC]
,d.[SUB_RGN_DESC]
,d.[AREA_DESC]
,d.[CTRY_DESC]
,e.[LOB_DESC]
,e.[PROD_LN_DESC]
,a.[SVC_BU_ID]
,a.[SVC_ACTN_CD]
,a.[CURR_STAT]
,a.[ASST_ID]
,a.[SYS_ITM_CLS_CD]
,a.[CUST_NBR]
,a.[DSPCH_CRT_DT]
,a.[ORIG_ORD_NBR]
,a.[ORIG_ORD_BU_ID]
,a.[PROB_DESC]
,a.[CRT_SRC_PRSN_HIST_GEN_ID]
,f.[REPEAT_TM_GAP_SECND] / 86400 as 'REPEAT_TM_GAP_DAY'
,f.[REPEAT_DSPCH_NBR]
,a.[TMZN_LOC_ID]
,b.[BUS_RPTG_TEAM_NM]
,b.[ASSOC_FULL_NM]
,g.[CONTRACT_ACTIVE]
FROM [RD].[PKG].[DH_FT] a LEFT OUTER JOIN [RD].[PKG].[A_D] b
on
a.[CRT_SRC_PRSN_HIST_GEN_ID]=b.[SRC_PRSN_HIST_GEN_ID]
Left Outer Join [RD].[C_W].[F_D_C] C
on a.[DSPCH_CRT_DT] = c.[ACTUAL_DATE]
left outer join [RD].[PKG].[P_G_H_D_V] d
on a.[SVC_BU_ID] = d.[BU_ID]
left outer join [RD].[PKG].[B_P_H_D] e
on
a.[SYS_ITM_CLS_CD] = e.[ITM_CLS_CODE]
left outer join [RD].[PKG].[G_M_R_F] f
on
a.[SVC_DSPCH_ID] = f.[SVC_DSPCH_ID]
left outer join [GD].[o].[IB] g
on a.[ASST_ID] = g.[ASST_ID]
where [SVC_ACTN_CD] in (--Blanked due to data sensitivity)
and a.[SVC_DSPCH_ID] is not null
and [CURR_STAT] not in (--Blanked due to data sensitivity)
and d.[SUB_RGN_DESC] != '--Blanked due to data sensitivity'
and f.[B2C_FLG] = 1
and c.[FISCAL_Week] > = '--Blanked due to data sensitivity'
and a.[TMZN_LOC_ID] in (--Blanked due to data sensitivity)
)
, CTE2 As
(
Select a.*
,b.[ITM_NBR]
,d.[COMMODITY_DESC]
from CTE1 a left outer join [RD].[S_P].[G_S_D_I_O_D] b
on a.[SVC_DSPCH_ID] = b.[SVC_DSPCH_ID]
left outer join [RD].[S].[C_M_I] c
on
b.[ITM_NBR] = c.[ITEM_NUM]
left outer join [RD].[C_W].[R_C] d
on
c.[REPORTING_COMMODITY_ID] = d.[REPORTING_COMMODITY_ID]
)
,CTE3 AS
(
select
a.[FISCAL_YEAR]
,a.[FISCAL_Quarter]
,a.[FISCAL_Month]
,a.[FISCAL_Week]
,a.[SVC_DSPCH_ID]
,a.[B2C_FLG]
,a.[B2D_FLG]
,a.[RGN_DESC]
,a.[SUB_RGN_DESC]
,a.[AREA_DESC]
,a.[CTRY_DESC]
,a.[LOB_DESC]
,a.[PROD_LN_DESC]
,a.[SVC_BU_ID]
,a.[SVC_ACTN_CD]
,a.[CURR_STAT]
,a.[ASST_ID]
,a.[SYS_ITM_CLS_CD]
,a.[CUST_NBR]
,a.[DSPCH_CRT_DT]
,a.[ORIG_ORD_NBR]
,a.[ORIG_ORD_BU_ID]
,a.[PROB_DESC]
,Stuff (
(
SELECT
','+' '+ [COMMODITY_DESC]
FROM CTE2 b
WHERE
b.[SVC_DSPCH_ID] = a.[SVC_DSPCH_ID]
ORDER BY
b.[COMMODITY_DESC] DESC
FOR XML PATH('')), 1, LEN(','), '') AS 'PN_Combo'
,a.[CRT_SRC_PRSN_HIST_GEN_ID]
,a.[REPEAT_TM_GAP_DAY]
,a.[REPEAT_DSPCH_NBR]
,a.[TMZN_LOC_ID]
,a.[BUS_RPTG_TEAM_NM]
,a.[ASSOC_FULL_NM]
,a.[CONTRACT_ACTIVE]
from CTE2 A
group by
a.[FISCAL_YEAR]
,a.[FISCAL_Quarter]
,a.[FISCAL_Month]
,a.[FISCAL_Week]
,a.[SVC_DSPCH_ID]
,a.[B2C_FLG]
,a.[B2D_FLG]
,a.[RGN_DESC]
,a.[SUB_RGN_DESC]
,a.[AREA_DESC]
,a.[CTRY_DESC]
,a.[LOB_DESC]
,a.[PROD_LN_DESC]
,a.[SVC_BU_ID]
,a.[SVC_ACTN_CD]
,a.[CURR_STAT]
,a.[ASST_ID]
,a.[SYS_ITM_CLS_CD]
,a.[CUST_NBR]
,a.[DSPCH_CRT_DT]
,a.[ORIG_ORD_NBR]
,a.[ORIG_ORD_BU_ID]
,a.[PROB_DESC]
,a.[CRT_SRC_PRSN_HIST_GEN_ID]
,a.[REPEAT_TM_GAP_DAY]
,a.[REPEAT_DSPCH_NBR]
,a.[TMZN_LOC_ID]
,a.[BUS_RPTG_TEAM_NM]
,a.[ASSOC_FULL_NM]
,a.[CONTRACT_ACTIVE]
)
,Dispatch_Map AS
(
select distinct
d.[FISCAL_YEAR]
,d.[FISCAL_Quarter]
,d.[FISCAL_Month]
,d.[FISCAL_Week]
,a.[RGN_DESC]
,a.[SUB_RGN_DESC]
,a.[AREA_DESC]
,a.[CTRY_DESC]
,a.[LOB_DESC]
,a.[PROD_LN_DESC]
,a.[ASST_ID]
,b.[SVC_DSPCH_ID]
,b.[X_ISP_REPEAT_REAS_VAL]
,a.[PN_Combo] AS 'Original Order'
,b.[Dispatch_Part_Commodity_List]
,b.[DSPCH_CRT_DT]
,b.[SVC_ACTN_CD]
,c.[BUS_RPTG_TEAM_NM]
,c.[ASSOC_FULL_NM]
,DATEDIFF(day,lag(a.[DSPCH_CRT_DT],0) over (Partition by a.[ASST_ID] Order by a.[DSPCH_CRT_DT]),b.[DSPCH_CRT_DT]) as 'Duration'
,ROW_NUMBER() OVER(Partition by b.[SVC_DSPCH_ID] ORDER BY b.[SVC_DSPCH_ID] ) AS 'Row_Count'
,Case
When a.[SVC_ACTN_CD] in ('OWCN','OW5') then 'P&L'
When a.[SVC_ACTN_CD] in ('OWPCN','OWP') then 'Parts only'
When a.[SVC_ACTN_CD] in ('BILCIS3BD(RC)','BILCIS6BD(RC)','BILCIS4BD(RC)') then 'CIS'
When a.[SVC_ACTN_CD] in ('POR','PABILCAR') then 'CAR'
When a.[SVC_ACTN_CD] in ('BILMIS') then 'MIS'
Else 'Other' End as 'GSD Tower'
,Case
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, Miscellaneous' and b.[Dispatch_Part_Commodity_List] = 'Motherboard' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'LCD Panel' and b.[Dispatch_Part_Commodity_List] = 'LCD' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, Documentation' and b.[Dispatch_Part_Commodity_List] = 'Motherboard' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, Documentation, Battery (Notebook)' and b.[Dispatch_Part_Commodity_List] = 'Motherboard, Documentation' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, LCD Panel, Documentation' and b.[Dispatch_Part_Commodity_List] = 'LCD Panel' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, Memory' and b.[Dispatch_Part_Commodity_List] = 'Motherboard, Documentation' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, Keyboard, Documentation' and b.[Dispatch_Part_Commodity_List] = 'Motherboard, Documentation' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, Documentation, Battery (Notebook)' and b.[Dispatch_Part_Commodity_List] = 'Motherboard, Documentation' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, Documentation' and b.[Dispatch_Part_Commodity_List] = 'Motherboard(2), Documentation' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, Documentation, Chassis' and b.[Dispatch_Part_Commodity_List] = 'Motherboard, Documentation' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'LCD Panel, Chassis, Chassis' and b.[Dispatch_Part_Commodity_List] = 'LCD Panel, Chassis(2)' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, Documentation, Chassis' and b.[Dispatch_Part_Commodity_List] = 'Motherboard' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, Documentation' and b.[Dispatch_Part_Commodity_List] = 'Motherboard, Miscellaneous, Mechanical Hardware, Documentation' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, Motherboard, Documentation, Documentation' and b.[Dispatch_Part_Commodity_List] = 'Motherboard, Fan Assembly, Documentation' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, Miscellaneous, Mechanical Hardware, Documentation, Cables' and b.[Dispatch_Part_Commodity_List] = 'Motherboard, Miscellaneous, Mechanical Hardware, Documentation' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, Documentation' and b.[Dispatch_Part_Commodity_List] = 'Motherboard, Miscellaneous, Mechanical Hardware, Documentation' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, Miscellaneous, Mechanical Hardware, Keyboard, Chassis, Chassis, Chassis, Cables' and b.[Dispatch_Part_Commodity_List] = 'Motherboard, Miscellaneous, Mechanical Hardware, Documentation' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, Documentation, Battery (Notebook)' and b.[Dispatch_Part_Commodity_List] = 'Motherboard' Then 1
when ltrim(Rtrim(a.[PN_Combo])) = 'Motherboard, Miscellaneous, Mechanical Hardware, Documentations' and b.[Dispatch_Part_Commodity_List] = 'Motherboard, Documentation' Then 1
when ltrim(Rtrim(a.[PN_Combo])) like '%Motherboard, Documentation%' and b.[Dispatch_Part_Commodity_List] = 'Motherboard, Documentation' Then 1
when ltrim(Rtrim(a.[PN_Combo])) like '%Hard Drive%' and b.[Dispatch_Part_Commodity_List] = 'Hard Drive' Then 1
when ltrim(Rtrim(a.[PN_Combo])) like '%Chassis%' and b.[Dispatch_Part_Commodity_List] = 'Chassis' Then 1
when ltrim(Rtrim(a.[PN_Combo])) like '%LCD Panel%' and b.[Dispatch_Part_Commodity_List] = 'LCD Panel' Then 1
Else 0 End as 'Exemption'
from CTE3 a inner join [GSEDATA].[dbo].[UPSELL_FACT] b
on
a.[ASST_ID] = b.[ASST_ID]
LEFT OUTER JOIN [RAWDATA].[PARTY_PKG].[ASSOC_DIM] c
on
b.[SRC_PRSN_HIST_GEN_ID]= c.[SRC_PRSN_HIST_GEN_ID]
Left Outer Join [RAWDATA].[CORP_WW].[FISCAL_DAY_CALENDAR] d
on
b.[DSPCH_CRT_DT] = d.[ACTUAL_DATE]
where a.[CONTRACT_ACTIVE] = 0
and
b.[FISCAL_Week] >= '--Blanked due to data sensitivity'
and
b.[DSPCH_CRT_DT] > a.[DSPCH_CRT_DT]
and
b.[B2D_FLG] = 1
and
a.[ASST_ID] != '--Blanked due to data sensitivity'
and
b.[DSPCH_CRT_DT] > a.[DSPCH_CRT_DT]
)
,CTE4 as
(
Select distinct *
, case when [Dispatch_Part_Commodity_List] = ltrim(Rtrim([Original Order])) then 1 else 0 end as'Same Part Repeat'
, case When isnull([Dispatch_Part_Commodity_List], '') = '' or isnull([Original Order], '') = '' then 1 else 0 end as 'Labor Only Repeat'
, Case When [Dispatch_Part_Commodity_List] != ltrim(Rtrim([Original Order])) then 1 else 0 end as 'Non Original Order'
, Case When [Dispatch_Part_Commodity_List] like Concat ('%',ltrim(Rtrim([Original Order])),'%') then 1 else 0 end as 'Standby Flag'
from Dispatch_Map
where Row_Count = 1
)
Select *
,Case
When ([Same Part Repeat] = 1 or [Exemption] = 1) and [X_ISP_REPEAT_REAS_VAL] = 'DOA Service Part' then 'DOA Repeat'
When ([Same Part Repeat] = 1 or [Exemption] = 1) and ([X_ISP_REPEAT_REAS_VAL] != 'DOA Service Part' or isnull([X_ISP_REPEAT_REAS_VAL], '') = '') then 'Same Part Repeat'
When [Labor Only Repeat] = 1 and [Same Part Repeat] = 0 and [Exemption] = 0 then 'Labor Only Repeat'
When [Same Part Repeat] = 0 and [Labor Only Repeat] = 0 and [Standby Flag] = 0 and [Non Original Order] = 1 and [Exemption] = 0 then 'Non Original Order'
When [Standby Flag] = 1 and [Non Original Order] = 1 and [Same Part Repeat] = 0 and [Labor Only Repeat] = 0 and [Exemption] = 0 then 'Standby Parts'
Else 'Others' End as 'Part Repeat Cause'
from CTE4
Результаты, как в настоящее время отображаются
Синий Подчеркнуто следуетбудет отображаться как резервные детали, а также как неоригинальный заказ