Это мой первый пост.Пожалуйста, извините за любые типичные ошибки, которые я мог совершить!В приведенном ниже коде я просто пытаюсь вывести два столбца "Invoice_id" и "Category".второй столбец создается с использованием условия case-when.В случае «случай-когда» я использую две таблицы, созданные с помощью оператора «with».Я просто не могу понять синтаксическую ошибку с моим «с».Любая помощь с благодарностью!(Я не придерживался стандартного формата строчных и прописных букв SQL. Пожалуйста, игнорируйте)
with get_tracks as
(
Select
i.invoice_id,
i.customer_id,
t.track_id as track_id,
a.album_id as album_id
from invoice i
inner join invoice_line il on i.invoice_id=il.invoice_id
inner join track t on il.track_id=t.track_id
inner join album a on a.album_id=t.album_id
)
with tracks_per_album as
(
select
count(distinct t.track_id) as num_of_tracks,
a.album_id as album_id
from album a
inner join track t on a.album_id=t.album_id
group by 2
)
select
invoice_id,
case
when ((select count(distinct track_id)
from get_tracks
group by album_id
except
select num_of_tracks from tracks_per_album
group by album_id)
AND
(select num_of_tracks from tracks_per_album
group by album_id
except
select count(distinct track_id) from get_tracks
group by album_id
) is Null) then "Album"
else "Individual"
end as category
from get_tracks group by 1
Сообщение об ошибке:
DatabaseError: Execution failed on sql '
with get_tracks as
(
Select
i.invoice_id,
i.customer_id,
t.track_id as track_id,
a.album_id as album_id
from invoice i
inner join invoice_line il on i.invoice_id=il.invoice_id
inner join track t on il.track_id=t.track_id
inner join album a on a.album_id=t.album_id
)
with tracks_per_album as
(
select
count(distinct t.track_id) as num_of_tracks,
a.album_id as album_id
from album a
inner join track t on a.album_id=t.album_id
group by 2
)
select
invoice_id,
case
when ((select count(distinct track_id)
from get_tracks
group by album_id
except
select num_of_tracks from tracks_per_album
group by album_id)
AND
(select num_of_tracks from tracks_per_album
group by album_id
except
select count(distinct track_id) from get_tracks
group by album_id
) is Null) then "Album"
else "Individual"
end as category
from get_tracks group by 1
': near "with": syntax error