使用两个外部引用创建子查询

Create a Subquery with two external references

我正在尝试解决一个练习,但在尝试将外部引用放入子查询时出现错误。 表格如下:

CREATE TABLE dbo.SONGS
(
id_song int  IDENTITY(1,1) primary key,
id_album int,
name varchar(50),
price numeric(20,2)
)

CREATE TABLE dbo.PURCHASE
(
id_song int,
id_user int,
price numeric(20,2),
date datetime
)

当然id_song是SONGS的FK 歌曲是有价格的,但用户可以以更高或更低的价格购买。

该练习要求获得每首歌曲的购买价格与歌曲价格之间的最大差额。到目前为止我所做的如下:

SELECT SO.name,
        (SELECT MAX(ABS(SO.price-PU.price)) 
         FROM PURCHACE PU WHERE PU.id_song=SO.ID_SONG) diff
        FROM SONGS SO

但是返回错误。

消息 8124,级别 16,状态 1,第 4 行 在包含外部引用的聚合表达式中指定了多个列。如果要聚合的表达式包含外部引用,则该外部引用必须是表达式中唯一引用的列

有什么建议吗?

抱歉我的英语不是我的母语。 感谢进阶

我认为简单的 max group by 应该可行:

select
    so.name,
    max(so.price-pu.price) diff
from dbo.songs so
    inner join dbo.purchase pu
        on pu.id_song = so.id_song
group by
    so.name