Pregunta

Ayúdame por favor con esta simple consulta 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)";

Esto es lo que tengo.

Tengo una entidad simple llamada OrdersIncomes con ID,PaidMoney,DatePaid,Order_ID propiedades

Quiero seleccionar el mes y sumar el dinero de pago así:

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)

Pero E-SQL no funciona y no sé qué hacer. Aquí mi E-SQL que necesita refactorización:

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)";

Hay una excepción: Errordescription = "El identificador 'O' no es válido porque no está contenido en una función agregada ni en el grupo por cláusula".

Si incluyo o en grupo por cláusula, como: FROM XACCModel.OrdersIncomes as o group by oEntonces no recibo resultados sumados y agregados. ¿Es esto un error o lo que estoy haciendo mal?

Aquí hay una consulta de Linq to Entities y también funciona:

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) };
¿Fue útil?

Solución

Dé un nombre de alias al grupo por cláusula y use ese alias en la cláusula de selección.

SELECCIONE Pagado Month, Sqlserver.sum (O.PaidMoney) como PayMoney de xaccmodel.ordersincomes como o grupo por sqlserver.month (o.datepaid) como Pagado Month

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top