Guest User

Untitled

a guest
Jul 18th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. Year Report_ID BAD_PART_NUMBERS
  2. 2015 P12568 6989820
  3. 2015 P12568 1769819
  4. 2015 P12568 1988700
  5. 2015 P12697 879010
  6. 2015 P12697 287932
  7. 2015 P12697 17902
  8.  
  9. order_no Customer_id Purchase dt PART_NUM PART_DESC
  10. 265187 B1792 3/4/2016 02-6989820 gfsahj
  11. 1669 B1792 7/8/2017 01-32769237 susisd
  12. 1692191 B1794 5/7/2015 03-6989820 gfsahj
  13. 16891 B1794 3/24/2016 78-1769819 ysatua
  14. 62919 B1794 2/7/2017 15-3287629 at8a9s7d
  15.  
  16. %let REPORT_ID=('P12568');
  17. Proc SQL;
  18. connect to teradata as tera1 (server='XXX' user=&userid pwd=&pwd Database
  19. ="XXXXX" );
  20. create table BAD_PART as
  21. select * from connection to tera1
  22. (
  23. select REPORT_ID,REPORT_DESC from REPORTS where REPORT_ID=&REPORT_ID
  24. *other where conditions
  25. group by 1,2
  26. )
  27. ;
  28. disconnect from tera1;
  29. quit;
  30. /*creating a PART_NUM macro*/
  31. PROC SQL NOPRINT;
  32. SELECT quote(cats('%',PART_NUM),"'")
  33. INTO :PART_NUM separated by ", "
  34. FROM BAD_PART ;
  35. QUIT;
  36.  
  37. %put macro variable PART_NUM:&PART_NUM;
  38.  
  39. /*FINDING SECONDARY PART INFORMATION*/
  40. proc sql;
  41. connect to teradata as tera1 (server='XXXX' user=&userid pwd=&pwd Database
  42. =" XXXX" );
  43. create table SEC_PART as
  44. select * from connection to tera1
  45. (
  46. SELECT &REPORT_ID as REPORT_ID, PART_NUM, PART_DESC,COUNT (DISTINCT ORDER)
  47. as frequency
  48. from (
  49. select Customer_id,Min(Purchase_dt) as FIRST_BAD_PART_PURCHASE
  50. from ORDERS
  51. where (PART_NUM like any(&PART_NUM)) A
  52. left join (
  53. select Customer_id, Purchase_dt, PART_NUM, PART_DESC,ORDER
  54. from ORDERS group by 1,2,3,4,5 ) B
  55. on A. Customer_id =B. Customer_id
  56. AND FIRST_BAD_PART_PURCHASE< Purchase_dt
  57. group by 1,2,3 order by frequency desc
  58. having frequency>0
  59. )
  60. ;
  61. disconnect from tera1;
  62. quit;
  63.  
  64. /*---various PROC SQL and Data steps*/
  65.  
  66. Report_ID MONTHS VALUE
  67. P12568 0 21
  68. P12568 1 34
  69. P12568 2 40.38
  70. P12568 3 67.05
  71. P12568 4 100.08
  72.  
  73. select REPORT_ID from reports where year='2015'.
  74.  
  75. JOIN ( select part_num bad_part_num from <bad part_num query> ) bad_list ON
  76. PART_NUM like '%' || bad_list.bad_part_num
  77.  
  78. where (PART_NUM like any(&PART_NUM)) A
Add Comment
Please, Sign In to add comment