2010-04-04 57 views
0

幫助我,請用這個簡單的E-SQL查詢:實體SQL集團通過問題,請大家幫忙

var qStr = "SELECT SqlServer.Month(o.DatePaid) as month, SqlServer.Sum(o.PaidMoney) as PaidMoney FROM XACCModel.OrdersIncomes as o group by SqlServer.Month(o.DatePaid)"; 

這裏是我的。

我有簡單的實體稱爲OrdersIncomesID,PaidMoney,DatePaid,Order_ID性質

我想選擇月和總結PaidMoney這樣的:

month Paidmoney 

1 500 

2 700 

3 1200 

T-SQL looks like this and works fine: 

    select MONTH(o.DatePaid), SUM(o.PaidMoney) 
    from OrdersIncomes as o 
    group by MONTH(o.DatePaid) 

results: 
----------- 

3   31.0000 

4   127.0000 

5   20.0000 

(3 row(s) affected) 

但E-SQL亙古不變的工作,我不知道該怎麼辦。在這裏我的E-SQL這就需要重構:

var qStr = "SELECT SqlServer.Month(o.DatePaid) as month, SqlServer.Sum(o.PaidMoney) as PaidMoney FROM XACCModel.OrdersIncomes as o group by SqlServer.Month(o.DatePaid)"; 

有一個例外:ErrorDescription中=「因爲它也不在聚合函數或GROUP BY子句中所含的各種標識‘O’是無效的。」

如果我在group by子句中包含o,如:FROM XACCModel.OrdersIncomes as o group by o 那麼我不會得到總結和彙總結果。 這是一個錯誤,或者我做錯了什麼?

這裏有一個LINQ到實體查詢,它也能工作:

var incomeResult = from ic in _context.OrdersIncomes 
    group ic by ic.DatePaid.Month into gr 
    select new { Month = gr.Key, PaidMoney = gr.Sum(i => i.PaidMoney) }; 

回答

2

舉一個別名的GROUP BY子句中使用此別名選擇子句。

SELECT PaidMonth,SqlServer.Sum(o.PaidMoney)作爲PaidMoney FROM XACCModel.OrdersIncomes鄰 組由SqlServer.Month(o.DatePaid)爲PaidMonth

+0

謝謝! 。 。 。 。 。 。 。 。 。 – Zviadi 2010-08-22 15:29:51