Я пытаюсь написать SQL-оператор, который должен работать так, как показано ниже в запросе Linq. В основном я хочу суммировать два столбца (Наличные и Чек) из одного столбца (Значение * Количество) на основе определенного условия (Тип == "Чек"). Таким образом, если типом является «Чек», укажите значение в столбце «Чек», в противном случае укажите его в столбце «Наличные».
Linq:
from ac in m_DataContext.acquisitions
join ai in m_DataContext.acquireditems on ac.Identifier equals ai.AcquisitionIdentifier
group ai by ac.SessionIdentifier into g
select new
{
SessionIdentifier = g.Key,
Cash = g.Where(ai => ai.Type != "Check").Sum(ai => (double?)ai.Value * (int?)ai.Quantity) ?? 0,
Check = g.Where(ai => ai.Type == "Check").Sum(ai => (double?)ai.Value * (int?)ai.Quantity) ?? 0,
CheckQuantity = g.Where(ai => ai.Type == "Check").Sum(ai => (int?)ai.Quantity) ?? 0
};
SQL:
SELECT a.SessionIdentifier, a.Checks as CheckQuantity, ???? as Cash, ???? as Check
FROM Acquisitions ac
INNER JOIN AcquiredItems ai ON ai.AcquisitionIdentifier = ac.Identifier
GROUP BY a.SessionIdentifier
Возможно ли это?