SQL总和是否等于总和?

问题描述 投票:0回答:1

是否有一种方法可以在SQL中使用SUM CASE语句并使ELSE表达式在未触发求和时返回非求和的数量。因此,而不是:

SUM(
    CASE WHEN ( "Table"."Secondary_ID_Column" = STRING('0',"Table"."ID_Column") )
        THEN "Table"."Quantity_Column"
        ELSE 0 END
) AS Quantity 

类似这样:

SUM(
    CASE WHEN ( "Table"."Secondary_ID_Column" = STRING('0',"Table"."ID_Column") )
        THEN "Table"."Quantity_Column"
        ELSE DO_NOT_SUM("Table"."Quantity_Column") END
) AS Quantity 

我知道这是伪编码的粗略方法,但是如果字段的前导零,我想返回总和;如果没有,则返回非求和的数量,如果可能,请在同一列中进行。我没有太多运气找到ELSE表达式不是“ ELSE 0 END”的示例。

谢谢!

sql sum case sybase sqlanywhere
1个回答
0
投票

虽然您的问题听起来像是基于主要ID与次要ID,但实际上您可能需要两列的总和...类似

select
      SUM( CASE WHEN YT.Secondary_ID_Column = STRING('0', YT.ID_Column)
         THEN YT.Quantity_Column else 0 end ) as QtyAsSecondaryColumn,
      SUM( CASE WHEN YT.Secondary_ID_Column = STRING('0', YT.ID_Column)
         THEN 0 else YT.Quantity_Column end ) as QtyAsPrimaryColumn
   from
      YourTable YT

您具有各自不同的计数。注意两个条件相同,但是匹配前导0,它得到数量。在SECOND实例上,它的值为0。因此,它将被汇总到专门不同的结果列中。

此帮助将帮助您实现目标吗?

© www.soinside.com 2019 - 2024. All rights reserved.