テーブル a とテーブル b の 2 つのテーブルがあります。
テーブルaは次のように設定されています...
ユーザー
Id ... InspectStat PurchaseStat SoldStat POSStat
------------------------------------------------------------
1
2
3
プロパティ
UserId ... Stage
---------------------------------------------------
1 Inspect
3 Purchase
1 Sold
2 POS
毎時間、各ステージの各ユーザーの合計プロパティの割合を計算するジョブを作成しようとしています。たとえば、最終結果は次のようになります (これらのプロパティが 4 つしかない場合)
Id ... InspectStat PurchaseStat SoldStat POSStat
------------------------------------------------------------
1 .5 0 .5 0
2 0 0 0 1.0
3 0 1.0 0 0
私が試してみました
ALTER PROCEDURE [dbo].[StatCounter]
AS
DECLARE @PropertyCount as float
BEGIN
set @PropertyCount = (select count(AcquisitionAssociateId) from [dbo].[Properties], [dbo].[Users]
WHERE
[dbo].[Users].Id = [dbo].[Properties].AcquisitionAssociateId)
update [dbo].[Users]
set [dbo].[Users].PurchaseStat = ((select count (AcquisitionAssociateId) from [dbo].[Properties]
WHERE
[dbo].[Users].Id = [dbo].[Properties].AcquisitionAssociateId
and
[dbo].[Properties].Stage = 'Purchase') / @PropertyCount)
...Repeat for 3 other stages
このメソッドは各ステージのプロパティの数を正しくカウントしていますが、実行した後、実際に行っているのは、ユーザーが割り当てられたプロパティの数をカウントしていて、プロパティの数を個別にカウントしていないことに気付きました個々のユーザーが実際に持っています。私は行くにつれてSQLを学んでいるので、助けていただければ幸いです。