使用两个外部引用创建子查询
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
我正在尝试解决一个练习,但在尝试将外部引用放入子查询时出现错误。 表格如下:
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