首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果你可以在Linq中做某件事,那么它总是可以用SQL来做吗?

如果你可以在Linq中做某件事,那么它总是可以用SQL来做吗?
EN

Stack Overflow用户
提问于 2009-10-05 18:02:02
回答 1查看 113关注 0票数 0

我正在尝试编写一条SQL语句,它的功能应该类似于下面的Linq查询。主要,我想根据某个条件(键入== "Check")将一列(Value * Quantity)中的两列(Cash和Check)相加。因此,如果Type是" Check ",则将该值放入Check列,否则将其放入Cash列。

Linq:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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

这个是可能的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-10-05 18:06:30

你可以这样做:

代码语言:javascript
复制
select sum(case when type = 'cash' then Value * Quantity else 0 end) as Cash,
    sum(case when type = 'check' then Value * Quantity else 0 end) as Check
from ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1521506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档