2014-04-02 48 views
0

我遇到了子查詢問題。子查詢本身起作用;我需要邏輯來生成我需要的數據集。但是,當我嘗試將它用作數據集時,出現下面的錯誤。很顯然,我可以通過連接來完成此任務,但我需要使用子查詢方法。我正在使用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引入

回答

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 
+0

是的!謝謝。我從CTE開始,但無法完成工作。現在我看到了問題。非常感謝你。 --Tim –