2016-09-13 7 views
0

をこれらのポイントを割り当てる:enter image description here報酬ポイントと私はここにテーブルがあり、元のテーブルのフィールドに

私は2人のトップに金と銀(他の1どこ適用のすなわち値が、0)を報いたいですポイントを参照して、払い戻されたフィールド。

既に最初のテーブルが作成されています。追加フィールド(ランク、ゴールド、シルバーフィールド)を変更しました。現在はnull値です。

私は出力がこのような何かになりたい:私はすでにRNK、金と銀のフィールドを追加することで、テーブルのデザインを変更した

update dbo.original 
set rnk = dense_rank() over (partition by WeekNumber order by pointsrewarded desc) 

set gold = 
    case when rnk = '1' then 1 else 0 end 
set silver = 
    case when rnk = '2' then 1 else 0 end 

:私はいくつかのクエリを試してみました enter image description here

クエリによって生成された値が、そのフィールドに移動して座るようにしたい。

お問い合わせの際に手伝ってください。お手伝いをしてください。お手数ですが、よろしくお願いいたします。

ありがとうございました。

答えて

1

これは以前の質問のフォローアップのようです。

SQL Serverのでは、更新可能なCTEを使用することができます。

with toupdate as (
     select o.*, 
      dense_rank() over (partition by WeekNumber order by pointsrewarded desc) as new_rnk 
     from dbo.original 
    ) 
update toupdate 
set rnk = new_rank, 
    gold = (case when rnk = 1 then 1 else 0 end), 
    silver = (case when rnk = 2 then 1 else 0 end); 

注:のみ、文字列、日付定数の単一引用符を使用します。数値定数には一重引用符を使用しないでください。

+0

ありがとうございます。 Uは多くの時間を節約しました。ジニアス.. !! –

関連する問題