子查询作为数据集

时间:2014-04-02 02:55:20

标签: sql

我遇到子查询问题。子查询单独工作;我需要逻辑来生成我需要的数据集。但是当我尝试将它用作数据集时,我得到以下错误。显然,我可以通过连接来实现这一点,但我需要这个特定的解决方案来采用子查询方法。我正在使用SQLServer 2008 R2。

select BK.book_id
from bkinfo.books BK
where BK.book_id in
(
  **select OD.book_id, sum(OD.quantity) as TotSales** see error below
  from  
    bkorders.order_details OD
  group by
    OD.book_id
  having
    sum(OD.quantity) > 500  
)

错误消息: 当未使用EXISTS

引入子查询时,只能在选择列表中指定一个表达式

1 个答案:

答案 0 :(得分:0)

IN子句需要一个只返回一列的查询。试试这个,2008支持CTE:

;with cte as 
(
    select 
        OD.book_id, 
        sum(OD.quantity) as TotSales
    from  bkorders.order_details OD
    group by OD.book_id
    having sum(OD.quantity) > 500
)
select c.book_id, c.TotSales
from cte c
join bkinfo.books bk on bk.book_id = c.book_id