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

时间:2015-01-24 20:08:06

标签: sql sql-server-2008 tsql join subquery

我试图在子查询中尝试放入外部引用时尝试解决练习并且出错。 表格如下:

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

1 个答案:

答案 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