是否有一种方法可以在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”的示例。
谢谢!
虽然您的问题听起来像是基于主要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。因此,它将被汇总到专门不同的结果列中。
此帮助将帮助您实现目标吗?