Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 作为数据集的子查询_Sql - Fatal编程技术网

Sql 作为数据集的子查询

Sql 作为数据集的子查询,sql,Sql,我的子查询有问题。子查询本身工作;我需要逻辑来生成我需要的数据集。但是当我尝试将其用作数据集时,我得到了下面的错误。显然,我可以通过连接来实现这一点,但我需要这个特殊的解决方案来采用子查询方法。我正在使用SQLServer2008R2 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

我的子查询有问题。子查询本身工作;我需要逻辑来生成我需要的数据集。但是当我尝试将其用作数据集时,我得到了下面的错误。显然,我可以通过连接来实现这一点,但我需要这个特殊的解决方案来采用子查询方法。我正在使用SQLServer2008R2

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一起引入时,只能在select列表中指定一个表达式。in子句要求只返回一列的查询。试试这个,2008支持CTEs:

;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

对非常感谢。我开始用CTE,但没能成功。现在我明白了问题所在。多谢各位--提姆