我创建的存储过程最初可以工作,但需求发生了变化。现在的要求基本上是结果应该是这样的:
item | totalproperty1 | percentofproperty1 | totalproperty2 | ...
在这样做时,我们需要将总数计算在百分比计算的分母中(以防止必须重新计算百分比的总数)。为了尝试这样做,我尝试了这个:
Declare @Item varchar(50)
Declare @TotalProperty1 decimal (9,2)
Declare @PercentProperty1 decimal (9,2)
Declare @TotalProperty2 decimal (9,2)
...
... 只是更多地声明了总数和百分比项目,始终使用相同的数据类型(这是一个丑陋的混乱,我道歉)
select @Item = item,
@TotalProperty1 = (--long query to get the total
),
@PercentProperty1 = (--long query to get the items compared
/ @TotalProperty1),
...
from table1 join table2 on table1.table2ID = table2.ID
where -- condition
本节中的 ... 是对总计/百分比计算的重复,只是针对不同的属性。
我删除了每个子查询的右括号并读取它们以验证它们与子查询的左括号匹配。以前,计算基本上是所有属性匹配项与项目总数的总和,但要求使其更加精细。
当我尝试执行更改脚本时,它显示“命令已成功完成”。这很好,但是当我尝试执行存储过程时,它也会返回“命令已成功完成”。这不是预期的结果(我认为“select @item ... conditions”部分仍应返回 select 语句,对吗?)。
与之前的工作相比,当前工作的主要变化是,之前,我没有做选择变量 = 查询、变量 2 = 查询等,而是一个典型的选择语句。如果我不得不猜测,那就是问题所在,但我将其用作与中途收到的 Msg 141 相关的指南。