1

私が作成したストアド プロシージャは最初は機能しましたが、要件が変わりました。要件は基本的に、結果が次のようになることです。

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... 条件」セクションは依然として select ステートメントを返すはずですよね?)。

以前の動作中のものと現在のものとの主な変更点は、以前は select variable = query、variable2 = query などではなく、典型的な select ステートメントを実行していたことです。推測するならそれが問題ですが、これは途中で受け取ったメッセージ 141 に関するガイドとして使用していました。

4

0 に答える 0