Использование команды Like в SQL для определения того же товара отправляется при следующем вызове службы - PullRequest
0 голосов
/ 24 февраля 2019

В настоящее время мы пытаемся получить данные, которые могут показать нам - какие детали были отправлены в предыдущем сервисе, и были ли они такими же или добавлены дополнительные детали.

Я классифицирую:

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

Результаты, как в настоящее время отображаются

enter image description here

Синий Подчеркнуто следуетбудет отображаться как резервные детали, а также как неоригинальный заказ

...