【发布时间】:2019-03-02 19:50:47
【问题描述】:
这是我的第一篇文章。请原谅我可能犯的任何典型的菜鸟错误! 在下面的代码中,我只是想输出两列“Invoice_id”和“Category”。 第二列是使用 case-when 条件创建的。 在 case-when 条件下,我使用了两个使用“with”语句创建的表。 我只是无法用我的“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
【问题讨论】: