【发布时间】:2017-10-17 20:59:03
【问题描述】:
我正在处理一份报告,该报告有一些参数传递给它。其中之一是由逗号操作的一串 UserId。这些被拆分并发送到表变量中。在我的查询中,我需要能够对值求和。在其中一些总和中,我需要按情况将此值添加到总和中,而在另一种情况下不添加。代码看起来像这样......
SELECT
TrnId,
TrnCode,
(SUM(CASE WHEN PolicyUseId in (select UseId From @Table) then TotalPremium else 0 end)) as Value
AnotherColumn
FROM SomeTableJoinedOnOtherThings
我遇到的问题是……“无法对包含聚合或子查询的表达式执行聚合函数。”我假设这是对 IN 表的检查。
我有另一个类似的报告,只是我只检查传递查询的参数。
(CASE PolicyUseId when @UseId then PriceColumn else 0 end)
此查询有效并正确执行所有计算。我不确定如何在选择行中没有这个 case 语句的情况下获得正确的总数,因为我需要提取 2 组数据来决定如何将它们添加到选择中。任何建议都会很棒。
【问题讨论】:
-
如果你删除了
SUM,它有用吗?...做一个CTE怎么样?
标签: sql sql-server sql-server-2008