Guest User

Untitled

a guest
Jun 18th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 5.26 KB | None | 0 0
  1. DECLARE @Date_Init AS DateTime
  2. DECLARE @Date_End AS DateTime
  3. DECLARE @No_Master AS VARCHAR(5)
  4. DECLARE @Pivot_Dates AS VARCHAR(MAX)
  5. DECLARE @Dates_Suma AS VARCHAR(MAX)
  6. DECLARE @Pivot_OPS AS VARCHAR(MAX)
  7. DECLARE @Pivot_TIMES AS VARCHAR(MAX)
  8. DECLARE @The_Query AS VARCHAR(MAX)
  9. SET @No_Master='1205'
  10. SELECT @Date_Init=fechaI FROM Weeks WHERE Week=@No_Master
  11. SET @Date_End=DATEADD(DAY,6,@Date_Init)
  12.  
  13. -- Get Operations on this master
  14. SELECT  @Pivot_OPS = STUFF((
  15.                         SELECT DISTINCT('],['+DescSp+'_OPS')
  16.                         FROM PH_Master phm
  17.                         INNER JOIN I_Cat_Operaciones_Hab OPS ON OPS.Oper_ID=phm.OPER_ID
  18.                         INNER JOIN Cat_Operaciones cat ON Cat.Campo = OPS.Proceso
  19.                         WHERE No_Master=@No_Master
  20.                         ORDER BY '],['+DescSp+'_OPS'
  21.                         FOR XML PATH('')
  22.                         ), 1, 2, '') + ']'
  23.  
  24. SET @Pivot_TIMES=REPLACE(@Pivot_OPS,'_OPS','_Time')
  25.  
  26. -- Get planned dates of this ph_master @No_Master
  27. SELECT  @Pivot_Dates = STUFF(( SELECT
  28.                         DISTINCT('],['+LEFT(CONVERT(VARCHAR, Fecha, 120), 10))
  29.                         FROM PH_Master
  30.                         WHERE NO_Master = @No_Master
  31.                         ORDER BY '],['+LEFT(CONVERT(VARCHAR, Fecha, 120), 10)
  32.                         FOR XML PATH('')
  33.                         ), 1, 2, '') + ']'
  34.  
  35. SET @Dates_Suma=REPLACE(@Pivot_Dates,',','+')
  36.  
  37.  
  38.  
  39. SELECT * FROM
  40. (
  41.     --First Pivot Get The Qty of Hours Needed for the job
  42.     SELECT
  43.     plh.No_Master,plh.JOB_Number, cus.Identifier_Customer, cus.Name
  44.     , pc.Job,pc.Phase, pc.Part_Number, pc.Description
  45.     , bom.Part_No,bom.Qty_L,catop.DescSp+'_Time' AS DescSp,bom.ID,CONVERT(INT,bom.Nivel) Nivel
  46.     , (((plh.pzas_Fab*bom.Qty_req)*std.Factor)/60) TheTime
  47.     FROM
  48.     (
  49.         SELECT No_Master,JOB_Number,pzas_Fab,Fecha FROM PL_Historial
  50.         UNION ALL SELECT @No_Master AS No_Master,JOB_Number,0 AS pzas_Fab,DATE AS Fecha FROM PH_Entries WHERE DATE BETWEEN DATEADD(DAY,-2,@Date_Init) AND DATEADD(DAY,-2,@Date_End)
  51.     ) AS plh
  52.     INNER JOIN Production_Control pc ON plh.JOB_Number = pc.JOB_Number
  53.     INNER JOIN Customer cus ON pc.Identifier_Customer=cus.Identifier_Customer
  54.     INNER JOIN I_Bom bom ON plh.JOB_Number = bom.JOB_Number
  55.     INNER JOIN I_Parts_ENG eng ON bom.Part_no = eng.Part_No
  56.     --INNER JOIN I_cat_Type_Matl Matl ON eng.Type_Matl = Matl.Type_Matl
  57.     INNER JOIN I_Opers_Habilitado ohab ON bom.JOB_Number = ohab.JOB_Number AND bom.Nivel = ohab.Nivel
  58.     INNER JOIN I_Cat_Operaciones_Hab catHBOps ON ohab.Oper_id = catHBOps.Oper_Id AND (eng.Type_Matl = catHBOps.Type_Matl )--OR catHBOps.Type_Matl = 'ALL')
  59.     INNER JOIN Cat_Operaciones catop ON catHBOps.Proceso = catop.Campo
  60.     LEFT JOIN I_Cat_Std_Habilitado std ON ohab.Oper_Id = std.Oper_Id AND bom.Part_No = std.Part_No AND bom.Qty_L>=std.Longitud_Desde AND bom.Qty_L<=std.Longitud_Hasta
  61.     WHERE plh.No_Master= @No_Master --AND plh.JOB_Number=21067--21094
  62.                           AND plh.Fecha BETWEEN @Date_Init AND @Date_End
  63. )AS Time1
  64. PIVOT (SUM(TheTime) FOR DescSp IN ([Corte_Time],[CorteYPonche_Time],[Ponche_Time],[Resaque_Time]) )
  65. AS Time2
  66. LEFT JOIN
  67. (
  68.  --Second Pivot Get The Qty of Operations Needed for the job
  69.  SELECT * FROM
  70.     (
  71.     SELECT bom.JOB_Number,bom.Nivel,ioper.Oper_ID,cat.DescSp+'_OPS' AS DescSp
  72.     FROM
  73.     I_Bom bom
  74.     INNER JOIN I_Opers_Habilitado ioper ON bom.JOB_Number = ioper.JOB_Number AND bom.Nivel=ioper.Nivel
  75.     INNER JOIN I_Cat_Operaciones_Hab ohab ON ioper.Oper_Id = ohab.Oper_id
  76.     INNER JOIN Cat_OPeraciones cat ON ohab.Proceso = cat.Campo
  77.     --WHERE bom.JOB_Number=5883
  78.     ) AS Oper1
  79.     PIVOT(COUNT(Oper_ID) FOR DescSp IN ([Corte_OPS],[CorteYPonche_OPS],[Ponche_OPS],[Resaque_OPS]) )
  80.     AS Oper2
  81. ) AS OPS ON OPS.JOB_Number=Time2.JOB_Number AND OPS.Nivel=Time2.Nivel
  82. LEFT JOIN
  83. (
  84.  --Third Pivot Get The qty of pieces by day No_Master
  85.  SELECT *,[2012-01-28]+[2012-01-30]+[2012-01-31]+[2012-02-01]+[2012-02-02]+[2012-02-03] AS Total_Suma FROM
  86.  (
  87.     SELECT
  88.     pm.JOB_Number,pm.No_Master,pm.Fecha,pm.Part_No,pm.Nivel,Pzas_Fab, MAX(ohab.Secuencia) Secuencia
  89.     FROM PH_Master pm
  90.     INNER JOIN I_OPERS_HABILITADO ohab ON ohab.JOB_Number = pm.JOB_Number AND ohab.Nivel = pm.Nivel AND ohab.Oper_Id<>'NOCUT'
  91.     WHERE pm.No_master=1205  --AND pm.JOB_Number=21088
  92.     GROUP BY pm.JOB_Number,pm.No_Master,pm.Fecha,pm.Part_No,pm.Nivel,Pzas_Fab
  93. --select * from i_opers_habilitado
  94.  ) AS Dt1
  95.  PIVOT(SUM(Pzas_Fab) FOR Fecha IN ([2012-01-28],[2012-01-30],[2012-01-31],[2012-02-01],[2012-02-02],[2012-02-03]) )
  96.  AS Dt2
  97. ) AS DateI ON DateI.JOB_Number=Time2.JOB_Number AND DateI.Nivel=Time2.Nivel
  98.  
  99. LEFT JOIN
  100. ( -- Produced Shit-tier
  101.  SELECT * FROM
  102.  (
  103.     SELECT
  104.     phe.JOB_Number,phe.DATE AS Fecha,phe.Part_No, phe.Qty, phe.Nivel, MAX(ohab.Secuencia) Secuencia
  105.     FROM PH_Entries phe
  106.     INNER JOIN I_OPERS_HABILITADO ohab ON ohab.JOB_Number = phe.JOB_Number AND ohab.Nivel = phe.Nivel AND ohab.Oper_Id = phe.Oper_Id
  107.     WHERE phe.DATE BETWEEN '2012-01-28' AND '2012-02-03' AND ohab.Oper_Id<>'NOCUT' AND phe.job_number=21088
  108.     GROUP BY phe.JOB_Number,phe.DATE,phe.Part_No,phe.Nivel, phe.Qty
  109.     --ORDER BY Part_No
  110.  ) AS DtProd
  111.  PIVOT(SUM(Qty) FOR Fecha IN ([2012-01-28],[2012-01-30],[2012-01-31],[2012-02-01],[2012-02-02],[2012-02-03]) )
  112.  AS DtProd2
  113. ) AS DateProd ON DateProd.JOB_Number=Time2.JOB_Number AND DateProd.Nivel=Time2.Nivel AND DateProd.Secuencia = DateI.Secuencia
  114. WHERE time2.job_number=21088
  115. ORDER BY Name,Time2.Job,Time2.Phase,Time2.Part_Number,Time2.Part_No
  116.  
  117. --select * from ph_master where job_number=21088 and no_master=1205 and fecha between '2012-01-28' and '2012-02-03' and nivel=1
Add Comment
Please, Sign In to add comment