【问题标题】:sql select sum off of two where clausessql选择两个where子句的总和
【发布时间】:2012-01-17 16:39:36
【问题描述】:
SELECT Projects.Projectid, Projects.ProjectNumber, Projects.ProjectName,
       Projects.ProjectBudgetedIS, Projects.ProjectSpentIS, 
       Projects.ProjectBudgetedBusiness, Projects.PorjectSpentBusiness, Project.Status,
       ProjectStatus.Status AS Expr1

FROM Projects 
     INNER JOIN ProjectStatus ON  Projects.Status = ProjectStatus.StatusID 
WHERE Projects.Status = @Status

所以我想要做的是获取一个名为 invoices 的表的总和,该表有一个名为 ISorBusiness 的字段和一个名为 totalspent 的字段,并将该数据存储到相应字段的项目表中。因此,当我收到向 IS 收取费用的发票时,它会提取该金额并将其转入Projects.ProjectSpentIS,如果我收到一张属于企业的发票,它会将其转入Projects.ProjectBudgetedBusiness

我知道这应该很容易,对于这个菜鸟问题感到抱歉。提前致谢!

【问题讨论】:

  • 您真的需要存储聚合数据吗?这样做是否需要很多资源?像这样存储数据违反了规范化做法,并且很快地咬你一口。您似乎还声称想要将其滚动到可能是错误的领域(不应该是ProjectSpentBusiness)。就个人而言,我想稍微重构一下设计,所以我不限于严格的 2 个类别(即使我只使用过 2 个)。

标签: sql select sum where


【解决方案1】:

我会这样做:

SELECT  SUM(CASE WHEN (IsOrBusiness = 'IS') THEN totalSpent ELSE 0 END) AS IsSpent, 
        SUM(CASE WHEN (IsOrBusiness = 'Business') THEN totalSpent ELSE 0 END) AS BusinessSpent
FROM Invoices

显然,用法取决于您是尝试编写插入查询还是选择此数据作为您发布的选择查询的一部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多