Je me déplace DB de MySQL (utilisé ODBC) pour MS SQL et je veux "traduire" les requêtes SQL à LINQ. Quelqu'un peut-il m'aider avec cela (il devrait SUM Charge la colonne pour chaque emplacement et le résultat du groupe par mois):commande SQL LINQ (pivotant)
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
?
sortie devrait ressembler à ceci:
Location1 | Location2 | Location3 | date
EDIT:
I tryed à utiliser l'échantillon LINQ d'ici:
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();
et il est presque ce que je avoir besoin. Il devrait y avoir un regroupement par année aussi et je ne sais pas comment faire cela.
travail sur une réponse ... je voulais simplement mentionner que la clause ORDER BY dans le sql est pas valide. OrderTime a été regroupé et ne peut pas être utilisé ici. –