2012-08-24 67 views
1

我有以下代碼來查詢我的數據庫的SQL Server CE GROUP BY例外

SELECT U.Name, U.Date, Max(I.Amount) 
    FROM Users AS U,Installments AS I 
    GROUP BY I.ID 
    HAVING (Max(I.Sr) = 40 AND U.ID = I.ID) 

它產生的異常說

在聚合和分組表達式的SELECT子句 包含僅聚合分組表達式[SELECT子句 = U.Name]

而且我已經試過GROUP BY U.ID, I.ID但存在同樣的問題

請告訴我,我做錯了

回答

0

我相信你將需要按U.Name和U.Date對彙集適當地工作。

+0

但GROUP BY U.name是NCHAR和NCHAR在GROUP不允許BY正如微軟所說的 – user1375948

+0

@ user1375948:根據[有關SQL Server CE的GROUP BY的MSDN文檔](http://msdn.microsoft.com/zh-cn/library/ms173245%28v=sql.100%29), 'GROUP BY'表達式中不支持'ntext'和'image'類型的列 - nchar'不應該是一個問題 –

0

試試這個查詢,而不是:

SELECT 
     U.Name, U.Date, Max(I.Amount) 
    FROM 
     Users AS U 
    INNER JOIN 
     Installments AS I ON U.ID = I.ID 
    GROUP BY 
     U.Name, U.Date 
    HAVING 
     MAX(I.Sr) = 40 

我做了什麼?

  • 使用正確的ANSI INNER JOIN語法有指定連接條件,它屬於
  • GROUP BY必須在SELECT列的列表中未聚合
  • HAVING只應適用於所有列一個簡單的條件 - 不要定義JOIN條件或任何東西在這裏!

根據to the MSDN documentation on GROUP BY for SQL Server CE,只有ntext類型和image的列不支持GROUP BY表達 - nchar不應該是一個問題