我正在將DB從MySQL(使用ODBC)移動到MS SQL,我想將「SQL查詢」轉換爲LINQ。有人可以幫我解決這個問題(它應該爲每個位置和組的結果按月收費):對LINQ的SQL命令(pivoting)
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
?
輸出應該是這樣的:
Location1 | Location2 | Location3 | date
編輯:
我tryed從這裏使用LINQ示例:
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();
,它幾乎是我需要。也應該按年分組,我不知道如何做到這一點。
對答案的工作......只是想提到SQL中的ORDER BY無效。 OrderTime被分組了,不能在那裏使用。 – 2008-10-08 18:00:26