Ошибка 3807 в тераданных при попытке выполнить запрос - PullRequest
0 голосов
/ 09 июля 2020

TERADATA DATABASE

Когда я выполняю левое соединение, я получаю больше строк, возвращаемых. Моя базовая популяция в моей изменчивой таблице составляет 559 157 строк. И я пытаюсь получить только 559 157 строк из возврата базового населения. Но после выполнения этого запроса:

SELECT distinct a.*, b.column1, b.column2, b.column3, b.column4, b.column5, b.column6, c.column3, SUM(c.column3) AS Total_Column3_Profit, AVG(c.column3) AS Column3_Profit_Average
,CASE 
WHEN b.column5 < a.column6 1
      ELSE 0
      END as column_open_flag
,CASE
WHEN a.column4 < 580 THEN 1
     WHEN a.column4 between 580 and 619 THEN 2
     WHEN a.column4 between 620 and 639 THEN 3
     WHEN a.column4 between 640 and 659 THEN 4
     WHEN a.column4 between 660 and 679 THEN 5
     WHEN a.column4 between 680 and 699 THEN 6
     WHEN a.column4 between 700 and 739 THEN 7
     WHEN a.column4 >= 740 THEN 8
     ELSE 0
     END as column4_band
FROM volatile_table1 a
LEFT JOIN database_table1 b
ON a.column1 = b.column0
LEFT JOIN volatile_table2 c
ON a.column1 = c.column2
GROUP BY a.column1
,a.column2
,a.column3
,a.column4
,a.column5
,a.column6
,b.column1
,b.column2
,b.column3
,b.column4
,b.column5
,b.column6
,c.column3

я возвращаю более 2000000 строк. Итак, я хотел попробовать предложение UNION. Вот мой обновленный запрос:

SELECT a.column1, a.column2, a.column3, a.column4, a.column5, a.column6
,CASE 
WHEN b.column5 < a.column6 1
      ELSE 0
      END as column_open_flag,
CASE
WHEN a.column4 < 580 THEN 1
     WHEN a.column4 between 580 and 619 THEN 2
     WHEN a.column4 between 620 and 639 THEN 3
     WHEN a.column4 between 640 and 659 THEN 4
     WHEN a.column4 between 660 and 679 THEN 5
     WHEN a.column4 between 680 and 699 THEN 6
     WHEN a.column4 between 700 and 739 THEN 7
     WHEN a.column4 >= 740 THEN 8
     ELSE 0
     END as column4_band
FROM volatile_table1 a
UNION
SELECT b.column1, b.column2, b.column3, b.column4, b.column5, b.column6
FROM database_table1 b
UNION
SELECT c.column3, SUM(c.column3) AS Total_Column3_Profit, AVG(c.column3) AS Column3_Profit_Average
FROM volatile_table2 c
GROUP BY a.column1
,a.column2
,a.column3
,a.column4
,a.column5
,a.column6
,b.column1
,b.column2
,b.column3
,b.column4
,b.column5
,b.column6
,c.column3

Теперь я все время получаю ошибку 3807: Объект «a» не существует. Я выполнил запрос

HELP volatile table

, и он говорит, что обе изменчивые таблицы существуют. Может ли кто-нибудь указать мне направление моей ошибки? (Я также попытался удалить первый оператор case, который относится к b.column5

1 Ответ

0 голосов
/ 09 июля 2020

Если вы хотите объединить все после объединения, используйте подзапрос или CTE. Думаю, запрос будет выглядеть примерно так:

select . . .
from (select column1, column2, column3, column4, column5, . . .
      union all
      select column1, column2, column3, column4, column5, . . .
      union all
      select column1, column2, column3, column4, column5, . . .
     ) abc
group by GROUP BY a_column1, column2, column3, column4, column5
...