-1

次のフィールドを持つテーブルがあります:シーズン、コレクション、product_key、aggregated_sale。追加のランク列 (自動インクリメント) を追加します。これは、シーズン、コレクション、aggregated_sale ごとにランク付けする必要があります

私が持っていると仮定します

ss, f1, 2, 5
ss, f1, 3, 10
ss, f1, 1, 11
ss, f2, 4, 7
ss, f2, 5, 11

期待される出力は

ss, f1, 2, 5,1
ss, f1, 3, 10,2
ss, f1, 1, 11,3
ss, f2, 4, 7,1
ss, f2, 5, 11,2
4

2 に答える 2

0

それほど効率的ではありませんが、これは仕事をするはずです

select col1, col2,col3,col4,
(
 select count(*) from myTable where 
  col1<t.col1 or
 (col1=t.col1 and col2<t.col2) or
 (col1=t.col1 and col2=t.col2 and col4<t.col4)
)+1 as col5
FROM myTable t
order by col1,col2

ノート:

  • 2 つのレコードが同一である場合のランキングを指定する必要があります
  • 結果をテーブルに保存する場合は、UPDATE を使用する必要があります。
  • ORDER BY はオプションです
  • SQLサーバーには組み込み関数ROW_NUMBERがあります
于 2013-09-19T06:45:36.910 に答える