0
아래의 Linq 쿼리처럼 작동해야하는 SQL 문을 작성하려고합니다. 주로 특정 조건 (Type == "Check")에 따라 하나의 열 (Value * Quantity)에서 두 개의 열 (Cash 및 Check)을 합산하려고합니다. 따라서 Type이 "Check"이면 Check 열에 값을 넣고 그렇지 않으면 Cash 열에 값을 넣습니다.당신은 Linq에서 그것을 할 수 있다면 SQL에서 항상 뭔가를 할 수 있습니까?
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
이 가능합니까?
을 이것은 MS SQL2005이며 또한 PIVOT 키워드 http://msdn.microsoft.com/en-us/library/ms177410를 사용할 수 위의 경우. aspx –