0

ストアドプロシージャについて少しサポートが必要です。

結果から一連の列を反復処理し、各値を取得して対応する値を検索し、それらすべてを合計したいと思います。

私がそれを行うことができる唯一の方法は、各週の位置と各週のスコアに別々の変数と別々の選択ステートメントを使用することです。誰か助けてもらえますか?これは明らかにスケーラビリティには良くありません。

ストアドプロシージャ

 @pName varchar(50) = ''
AS
BEGIN


  Declare @p1 int = 0
  Declare @p2 int = 0
  Declare @s1 int = 0
  Declare @s2 int = 0
  Declare @pUserID int = 0
  Declare @pTotal int = 0


  set @pUserID = (Select UserID from PKR_USERS where UserName = @pName)

  set @p1 = (Select WEEK1POS From PKR_TOURNAMENT12)
  set @p2 = (Select WEEK2POS From PKR_TOURNAMENT12)

  set @s1  = (Select Points from PKR_SCORING where Position = @p1)
  set @s2  = (Select Points from PKR_SCORING where Position = @p2)

  set @pTotal = @s1 + @s2

  Update PKR_RESULTS set points = @pTotal Where UserID =  @pUserID
END
> PKR_Tournament12 Table 
> 
> [USERID][WEEK1POS][WEEK2POS] 1    1   1

PKR_Scoringテーブル

【位置】【ポイント】1102 9

前もって感謝します

4

1 に答える 1

0

こんにちは、これを試してください。UNPIVOT を使用しました。pls でテストしてください

Declare @pTotal int = ISNULL(
  SELECT SUM(ISNULL(Points)) FROM PKR_SCORING where Position  IN (
   SELECT FieldValue
FROM
(
  SELECT 
     WEEK1POS ,
     WEEK2POS 
  FROM dbo.PKR_TOURNAMENT12 WHERE USERID=(Select UserID from PKR_USERS where UserName = @pName)
) MyTable
 UNPIVOT
(FieldValue FOR FieldCode IN (WEEK1POS, WEEK2POS))AS MyUnPivot),0)
Update PKR_RESULTS set points = @pTotal Where UserID =  @pUserID
于 2012-09-26T00:56:02.917 に答える