I’m moving DB from MySQL (used ODBC) to MS SQL and I want to ‘translate’ SQL queries to LINQ. Can someone help me with this (it should SUM Charge column for every location and group result by months):
SELECT sum(case when Location='Location1' then Charge else 0 end) as Location1, sum(case when Location='Location2' then Charge else 0 end) as Location2, sum(case when Location='Location3' then Charge else 0 end) as Location3, MAKEDATE(YEAR(OrderTime),DAYOFYEAR(OrderTime)) AS date FROM Sales GROUP BY YEAR(OrderTime),MONTH(OrderTime) ORDER BY OrderTime DESC
?
Output should look like this:
Location1 | Location2 | Location3 | date
EDIT:
I tryed to use LINQ sample from here:
Is it possible to Pivot data using LINQ?
var query = context.log_sales .GroupBy(c => c.OrderTime) .Select(g => new { Date = g.Key, Location1 = g.Where(c => c.Location == 'Location1').Sum(c => c.Charge) ?? 0, Location2 = g.Where(c => c.Location == 'Location2').Sum(c => c.Charge) ?? 0 }).ToList();
and it is almost what I need. There should be grouping by year too and I don’t know how to do this.
This might help.