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