1

我想知道我是否正确解码了这个 SQL 逻辑。这是SQL:

,[hrs].[Hours] - SUM(CASE WHEN [UnitState].[UnitStateType] <> 'ACTIVE' THEN [Allocation].[AllocatedEnergyMwh] ELSE 0 END / CAST([Unit].[NetDependableCapacity] AS FLOAT)) AS SH

我将其解释为:

if [UnitState].[UnitStateType] does not equal active then SH equals the sum of [Allocation].[AllocatedEnergyMwh] / 
    (float)[Unit].[NetDependableCapacity].  

else SH = [hrs].[Hours] 
4

3 回答 3

1

它很接近,但您错过了 [hrs].[Hours] - 第一个案例部分。

if [UnitState].[UnitStateType] does not equal active
    then SH equals [hrs].[Hours] minus the sum of [Allocation].[AllocatedEnergyMwh] / (float)[Unit].[NetDependableCapacity].  

else SH = [hrs].[Hours] minus (0)/[Unit].[NetDependableCapacity]
于 2012-05-23T19:54:11.600 回答
1

不完全是。

SH没有别的了。else 只影响 sum 聚合。更准确地说,它说:

SH = hours -
 (the sum of AllocatedEnergyMwh where StateType != ACTIVE) / NetDependableCapacity

else 仅用于忽略 sum 中的活动 AllocatedEnergyMwh。在这些情况下,它通过设置 AllocatedEnergyMwh = 0 来做到这一点。

于 2012-05-23T19:55:11.480 回答
1

如果 [UnitState].[UnitStateType] 不等于 active 则

[hrs].[Hours] 减去 sum([Allocation].[AllocatedEnergyMwh] / [Unit].[NetDependableCapacity])

否则

[hrs].[Hours] 减去 sum(0/[Unit].[NetDependableCapacity]) --> 含义 [hrs].[Hours] - 0

于 2012-05-23T19:56:15.943 回答