Advertisement
anchormodeling

Teradata Table Elimination

Mar 27th, 2011
367
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.75 KB | None | 0 0
  1. -- Test run on  Teradata 12 (2009-05-02)
  2.  
  3. DROP    TABLE ANAT2_AnchorAttribute2;
  4. DROP    TABLE ANAT1_AnchorAttribute1;
  5. DROP    TABLE AN_Anchor;
  6.  
  7. CREATE  TABLE AN_Anchor (
  8.     AN_ID INT NOT NULL,
  9.     CONSTRAINT pk_AN_Anchor PRIMARY KEY(AN_ID)
  10. );
  11.  
  12. CREATE  TABLE ANAT1_AnchorAttribute1 (
  13.     AN_ID INT NOT NULL,
  14.     ANAT1_AnchorAttribute1Value CHAR(10) NOT NULL,
  15.     CONSTRAINT pk_ANAT1_AnchorAttribute1
  16.            PRIMARY KEY(AN_ID),
  17.     CONSTRAINT fk_ANAT1_AnchorAttribute1
  18.            FOREIGN KEY(AN_ID) REFERENCES AN_Anchor(AN_ID)
  19. );
  20.  
  21. CREATE  TABLE ANAT2_AnchorAttribute2 (
  22.     AN_ID INT NOT NULL,
  23.     ANAT2_AnchorAttribute2Value CHAR(10) NOT NULL,
  24.     ANAT2_FromDate DATE format 'YYYY-MM-DD' NOT NULL,
  25.     CONSTRAINT pk_ANAT2_AnchorAttribute2
  26.            PRIMARY KEY(AN_ID, ANAT2_FromDate),
  27.     CONSTRAINT fk_ANAT2_AnchorAttribute2
  28.            FOREIGN KEY(AN_ID) REFERENCES AN_Anchor(AN_ID)
  29. );
  30.  
  31. DROP VIEW lAN_Anchor;
  32.  
  33. CREATE  VIEW lAN_Anchor
  34. AS
  35. SELECT
  36.     AN.AN_ID,
  37.     ANAT1.ANAT1_AnchorAttribute1Value,
  38.     ANAT2.ANAT2_AnchorAttribute2Value,
  39.     ANAT2.ANAT2_FromDate
  40. FROM
  41.     AN_Anchor AN
  42. LEFT JOIN
  43.     ANAT1_AnchorAttribute1 ANAT1
  44.     ON
  45.     ANAT1.AN_ID = AN.AN_ID
  46. LEFT JOIN
  47.     ANAT2_AnchorAttribute2 ANAT2
  48.     ON
  49.     ANAT2.AN_ID = AN.AN_ID
  50.     AND
  51.     ANAT2.ANAT2_FromDate = (
  52.         SELECT
  53.             MAX(sub.ANAT2_FromDate)
  54.         FROM
  55.             ANAT2_AnchorAttribute2 sub
  56.         WHERE
  57.             sub.AN_ID = AN.AN_ID
  58.     );
  59.  
  60. INSERT  INTO AN_Anchor (
  61.     AN_ID
  62. )
  63. VALUES
  64. (1);
  65.  
  66. INSERT  INTO AN_Anchor (
  67.     AN_ID
  68. )
  69. VALUES
  70. (2);
  71.  
  72. INSERT  INTO AN_Anchor (
  73.     AN_ID
  74. )
  75. VALUES
  76. (3);
  77.  
  78. INSERT  INTO ANAT1_AnchorAttribute1 (
  79.     AN_ID,
  80.     ANAT1_AnchorAttribute1Value
  81. )
  82. VALUES
  83. (1, 'Green');
  84.  
  85. INSERT  INTO ANAT1_AnchorAttribute1 (
  86.     AN_ID,
  87.     ANAT1_AnchorAttribute1Value
  88. )
  89. VALUES
  90. (2, 'Blue');
  91.  
  92. INSERT  INTO ANAT1_AnchorAttribute1 (
  93.     AN_ID,
  94.     ANAT1_AnchorAttribute1Value
  95. )
  96. VALUES
  97. (3, 'Red');
  98.  
  99. INSERT  INTO ANAT2_AnchorAttribute2 (
  100.     AN_ID,
  101.     ANAT2_AnchorAttribute2Value,
  102.     ANAT2_FromDate
  103. )
  104. VALUES
  105. (1, 'Car', '2008-01-01');
  106.  
  107. INSERT  INTO ANAT2_AnchorAttribute2 (
  108.     AN_ID,
  109.     ANAT2_AnchorAttribute2Value,
  110.     ANAT2_FromDate
  111. )
  112. VALUES
  113. (1, 'Bus', '2008-11-12');
  114.  
  115. INSERT  INTO ANAT2_AnchorAttribute2 (
  116.     AN_ID,
  117.     ANAT2_AnchorAttribute2Value,
  118.     ANAT2_FromDate
  119. )
  120. VALUES
  121. (2, 'Train', '2008-01-01');
  122.  
  123. INSERT  INTO ANAT2_AnchorAttribute2 (
  124.     AN_ID,
  125.     ANAT2_AnchorAttribute2Value,
  126.     ANAT2_FromDate
  127. )
  128. VALUES
  129. (2, 'Car', '2008-10-12');
  130.  
  131. INSERT  INTO ANAT2_AnchorAttribute2 (
  132.     AN_ID,
  133.     ANAT2_AnchorAttribute2Value,
  134.     ANAT2_FromDate
  135. )
  136. VALUES
  137. (3, 'Train', '2007-01-01');
  138.  
  139. SELECT  *
  140. FROM    lAN_Anchor;
  141.  
  142. EXPLAIN SELECT  *
  143. FROM    lAN_Anchor;
  144.  
  145. SELECT  ANAT1_AnchorAttribute1Value
  146. FROM    lAN_Anchor;
  147.  
  148. EXPLAIN SELECT  ANAT1_AnchorAttribute1Value
  149. FROM    lAN_Anchor;
  150.  
  151. SELECT  ANAT2_AnchorAttribute2Value
  152. FROM    lAN_Anchor;
  153.  
  154. EXPLAIN SELECT  ANAT2_AnchorAttribute2Value
  155. FROM    lAN_Anchor;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement