[英]SQL command to LINQ (pivoting)
我正在將數據庫從MySQL(使用ODBC)轉移到MS SQL,我想將SQL查詢“轉換”為LINQ。 有人可以幫我這個(它應該為每個位置的SUM Charge列和幾個月的組結果):
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
編輯:
我試着從這里使用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();
這幾乎是我的需要。 應該按年分組,我不知道該怎么做。
這可能有所幫助。
context.log_sales
.GroupBy(s => new {Year = OrderTime.Year, Month = OrderTime.Month})
.Select
( g => new {
Date = new DateTime(g.Key.Year, g.Key.Month, 1),
Location1 = g.Where(s => s.Location == "Location1").Sum(s => s.Charge),
Location2 = g.Where(s => s.Location == "Location2").Sum(s => s.Charge),
Location3 = g.Where(s => s.Location == "Location3").Sum(s => s.Charge),
}
)
.OrderBy(x => x.Date);
..你知道如何動態添加Locations to Select嗎? 例如,從List / Array。
編輯:..或者可能使位置動態加載並設置應在Select之前的Where語句中加載哪些位置。 這可能嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.