Присоединитесь к таблицам WITH в SQL красном смещении - PullRequest
0 голосов
/ 19 июня 2020
with temp as(
select  account_id, asm_signatures_classification, count(*) 
from asm_insights 
where date = '2020-05-20'
group by account_id, asm_signatures_classification
order by account_id
)

with temp2 as(
select  account_id, app_id
from asm_insights 
where date = '2020-05-20'
)

select * from temp join temp2 on temp.account_id = temp2.account_id`enter code here`

Я хочу иметь меньшие таблицы для выполнения некоторых практик, как я могу присоединиться к двум таким временным таблицам? что я сделал, получил сообщение об ошибке: SQL Ошибка [500310] [42601]: Недопустимая операция Amazon: синтаксическая ошибка рядом с «with» Позиция: 195;

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Пожалуйста, используйте запрос ниже,

with temp as (
select  account_id, asm_signatures_classification, count(*) 
from asm_insights t1
inner join (select  account_id, app_id from asm_insights where date = '2020-05-20') t2
on (temp.account_id = temp2.account_id)
where date = '2020-05-20'
group by account_id, asm_signatures_classification
order by account_id)
select * from temp;
0 голосов
/ 19 июня 2020

Не повторяйте with. Один with может определять несколько CTE:

with temp as (
      select  account_id, asm_signatures_classification, count(*) as cnt
      from asm_insights 
      where date = '2020-05-20'
      group by account_id, asm_signatures_classification
     ),
     temp2 as (
      select account_id, app_id
      from asm_insights 
      where date = '2020-05-20'
     )
select *
from temp join
     temp2
     on temp.account_id = temp2.account_id;

Конечно, это кажется глупым примером, потому что CTE для этого не нужны. Тем не менее, я исправил некоторые проблемы:

  • ORDER BY не подходит для CTE (если вы не ограничиваете количество строк).
  • Все столбцы должны иметь псевдонимы.

Этот конкретный запрос проще записать как:

select account_id, app_id, asm_signatures_classification
       cont(*) over (partition by account_id, asm_signatures_classification)
from asm_insights 

где date = '2020-05-20'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...