2013-01-21 43 views
0

我有此選擇查詢顯示AA表子查詢返回多個值,並不允許

select distinct 
    a.afdeling as AFD, 
    convert(varchar(10),DateAdd(Day, DateDiff(Day, 0, a.datetrans) , 0),103) as datetrans , 
    convert(varchar(10),DateAdd(Day, DateDiff(Day, 0, a.doe), 0),103) as inputdate, 
    (select COUNT(distinct a.DOE) from detail a left join 
     estate b on a.CodeEstate=b.Code group by 
     a.afdeling, a.datetrans , convert(varchar(10),DateAdd(Day, DateDiff(Day, 0, a.DOE) ,0),103) 
    ) as total , 
    datediff(DAY,a.datetrans,a.DOE) as variant , 
    GetDiffStatus(a.datetrans,a.DOE) as status from 
    detail a left join 
    estate b on a.CodeEstate=b.Code where b.name='Estate 1' and convert(varchar(10),DateAdd(Day, Datediff(Day, 0, 
    a.datetrans), 0),103) between '01/01/2013' and '31/01/2013' Group 
    BY a.datetrans, a.doe,DateDiff(Day, 0, a.doe),a.afdeling order by 
    a.afdeling, a.datetrans, a.inputdate , a.variant, 
    a.status 

我想要做的是蒙山算同日總DOE在一個表中,基於名稱在其他表(地產)中有一個關鍵的表詳細信息,但是當我使用該查詢時,它顯示一個錯誤 子查詢返回多個值。當子查詢遵循=,!=,<,< =,>,> =或當子查詢用作表達式時,這是不允許的。

如何解決這個問題,我使用SQL Server 2008 R2中,三江源

回答

1

子查詢有GROUP BY條款,但沒有WHERE條款,以使其與外部查詢相關。因此它會產生多個價值。由於您正在使用子查詢表達式的(假設爲單個)值作爲列值,因此會出現錯誤。

通過在子查詢和外部查詢中使用相同的別名,增強了這種混淆。

想要查找有關相關子查詢的更多信息。

+0

是的,我在我的子查詢中使用單個值,並且關於相同的別名,基本上,我計算同一個表中的數據,這就是爲什麼它看起來像別名是相同的。關於相關的子查詢,你能簡單地解釋一下嗎?我有點在這個SQL查詢事情nubi,謝謝 – user1995810

+0

嘗試運行只是子查詢。如果它有效,並返回多個值,那麼你有一個問題。實際上,外部'select'對於eah行來說,我希望返回以下每個列的值。您已經要求其中一個值同時具有多個值。您可以閱讀相關子查詢[此處](http://msdn.microsoft.com/zh-cn/library/aa213263(v = sql.80).aspx)作爲開始。 – HABO

相關問題