Преобразовать этот запрос SQL Server в Linq с общим - PullRequest
0 голосов
/ 21 октября 2018

У меня есть этот запрос к SQL Server, и я хочу преобразовать его в Linq:

SELECT
    [FMonth],
    [Locationn],
    (SELECT SUM(Sale) FROM [Fuels] WHERE FMonth = 1) AS Jan,
    (SELECT SUM(Sale) FROM [Fuels] WHERE FMonth = 2) AS Feb,
    (SELECT SUM(Sale) FROM[Fuels] WHERE FMonth = 3) AS March,
    (SELECT SUM(Sale) FROM [Fuels] WHERE FMonth = 4) AS April,
    (SELECT SUM(Sale) FROM [Fuels] WHERE FMonth = 5) AS May,
    (SELECT SUM(Sale) FROM [Fuels] WHERE FMonth = 6) AS Jun,
    (SELECT SUM(Sale) FROM [Fuels] WHERE FMonth = 7) AS Jul,
    (SELECT SUM(Sale) FROM [Fuels] WHERE FMonth = 8) AS  Aug 
FROM 
    [COSAuthNew].[dbo].[Fuels]

Результат этого запроса выше на рисунке, но мне нужно всего всего строки в столбце Total:

OutPut

Данные хранятся как:

CompanyName | Month | Sale
H&S         |  Jan  | 1200
H&S         |  Feb  | 5000 
H&S1        |  March| 8000 

Но я хочу отобразить как:

CompanyName| Jan |  Feb | March | Total
H&S        |1200 | 5000  | 7000 | 13200
H&S1       |2200 | 6000  | 8000 | 16200

ипоказывать те же данные в View

1 Ответ

0 голосов
/ 24 октября 2018

Поскольку вы не предоставили dbcontext или структуру сущностей, запрос linq будет выглядеть ниже для продаж и итогов за январь-июнь.Вам необходимо сгруппировать строки по названию компании (Location), а затем использовать условные значения в статистической функции SUM.

var result = fules.GroupBy(g => g.CompanyName)
             .Select(s=> new {
                CompanyName = s.Key,
                Jan = s.Sum(x=> x.Month == 1? x.Sale : 0),
                Feb = s.Sum(x => x.Month == 2 ? x.Sale : 0),
                Mar = s.Sum(x => x.Month == 3 ? x.Sale : 0),
                Apr = s.Sum(x => x.Month == 4 ? x.Sale : 0),
                May = s.Sum(x => x.Month == 5 ? x.Sale : 0),
                June = s.Sum(x => x.Month == 6 ? x.Sale : 0),
                Total = s.Sum(x=> x.Sale)
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...