2012-05-23 66 views
1

我想知道我是否正确解码了这个SQL逻辑。下面是在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] 

回答

1

不完全是。

对于SH,没有其他。其他只影响汇总。更准确地说,它说:

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

的else只用于忽略和活动AllocatedEnergyMwh。它通过在这些情况下设置AllocatedEnergyMwh = 0来实现。

+1

谢谢你的帮助 –

1

这是接近,但你错过了[小时] [时间] - 为第一个案例中的一部分。

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] 
+0

所以,我没有。谢谢。 –

1

如果[UnitState] [UnitStateType]不等于有源然后

[小时]。[小时]减去总和([分配]。[AllocatedEnergyMwh]/[单位]。[NetDependableCapacity])

否则

[小时] [小时]减去总和(0/[单位] [NetDependableCapacity]) - >含义[小时] [小时] - 0

+0

谢谢你的帮助 –