0

SQLで、次のようなことをしたい

update table set col = rank(col) order by col

どうすればいいですか?

目的 :

現在、列には-14000、23、4000、23000などの極端な値があります...それらはasc、descソートで使用されますが、それらをスライダーにプロットすると、たとえば10個の位置があり、各スライダーの位置には非常に不均一なデータがあるため、それを均等にするために、列の番号を付け直したいのですが、

-14000 becomes 0
23 becomes 1
4000 becomes 2

等々

4

2 に答える 2

3

これを使用しました:

update table set col = (select count(*) from (select col from table) as temptable where temptable.col <table.col );
于 2012-01-24T23:11:17.733 に答える
0

ROW_NUMBERSQL Server では、2 つのサブクエリと関数を使用できます。に重複がある場合、ランキングは通常の競技ランキングcolに従います。

サンプル スクリプト:

SELECT * INTO #TABLE
FROM
(
    select -14000 col
    union all SELECT 23
    union all select 4000
    union all SELECT 23 --sample duplicated data
) Unioned

UPDATE #TABLE
SET col =
(
    SELECT top 1 rowNum
    FROM
    (
        SELECT 
            col
            , row_number() OVER (order by col) - 1 rowNum --starts at 0 rank
        FROM #TABLE
    ) MySubQuery
    WHERE MySubQuery.col = #TABLE.col
)
于 2012-01-22T23:56:07.353 に答える