我试图在子查询中尝试放入外部引用时尝试解决练习并且出错。 表格如下:
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
但那是一个错误。
Msg 8124,Level 16,State 1,Line 4 在包含外部引用的聚合表达式中指定了多个列。如果聚合的表达式包含外部引用,则该外部引用必须是表达式
中引用的唯一列有什么建议吗?
抱歉我的英语不是我的母语。 Thanx in advenced
答案 0 :(得分:2)
我认为简单的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