You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在SQL中实现xx_MainOeuvre两次查询结果的乘运算替代C#计算?

用SQL直接实现你的计算需求

当然可以直接通过SQL完成这个需求!而且相比在C#中处理,这么做还能减少数据库传输到应用层的数据量,整体效率更高。下面是具体的实现方案:

核心思路

把你原来的两个查询作为子查询,通过xx_TypeMO字段关联起来,一边计算耗时和单价的乘积,一边拼接出带计算过程的显示格式。

完整SQL代码

SELECT
    q2.xx_TypeMO,
    CONCAT(q2.TimeSpend * q1.xx_pu, ' (', q2.TimeSpend, '*', q1.xx_pu, ')') AS RealPrice
FROM
    (
        -- 获取各类型的总耗时(对应你的查询2)
        SELECT xx_TypeMO, SUM(xx_Duree) AS TimeSpend
        FROM xx_MainOeuvre
        WHERE xx_TypeDuree = 1 AND xx_sysParentId LIKE 'CC1500107'
        GROUP BY xx_TypeMO
    ) q2
INNER JOIN
    (
        -- 获取符合条件的单价(对应你的查询1)
        SELECT xx_TypeMO, xx_pu
        FROM xx_MainOeuvre mo
        WHERE mo.xx_TypeDuree != 1 AND mo.xx_pu != 0 AND xx_sysParentId LIKE 'CC1500107'
    ) q1 ON q2.xx_TypeMO = q1.xx_TypeMO

执行结果

运行这条SQL后,会直接生成你想要的格式:

xx_TypeMO | RealPrice |

MOI | 180 (445) |
MOV | 408 (12
34)|

关于SQL还是C#的选择建议

  • 如果只是这类简单的关联计算,优先用SQL实现:数据库在数据聚合、关联查询上的性能天生更优,还能减少网络传输的数据量。
  • 如果后续计算逻辑变得复杂(比如要结合多种业务规则、调用外部服务,或者需要对结果做大量灵活处理),再考虑在C#中完成计算,这样更便于后续的维护和扩展。

内容的提问来源于stack exchange,提问作者Cesar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:02:01