以下のサンプルデータを投稿しています。SQLのRow_Numberでの順位付け
私は何を持っていること(ROW_NUMBER関数を使用して達成される)日付と名前列に基づいて番号を生成し、行番号です。私が今必要とするのは、Group_Numという別の派生列で、各グループ(この場合は3つ)の番号を作成します。これは、私の名前列が繰り返されますが、日付列の値が変わるという事実を考慮して達成できますか?
ありがとうございます。
以下のサンプルデータを投稿しています。SQLのRow_Numberでの順位付け
私は何を持っていること(ROW_NUMBER関数を使用して達成される)日付と名前列に基づいて番号を生成し、行番号です。私が今必要とするのは、Group_Numという別の派生列で、各グループ(この場合は3つ)の番号を作成します。これは、私の名前列が繰り返されますが、日付列の値が変わるという事実を考慮して達成できますか?
ありがとうございます。
これを確認してください。 Row_number()、lag()、SUM()を使用してこれを実現できます。
select
Date,
Name,
Row_number()over(partition by Group_Num order by ROwiD) Row_Num,
Group_Num
from
(
SELECT * ,
SUM(R) OVER(ORDER BY RowID) Group_Num
FROM
(
select *,
Case When
lag(name) OVER (ORDER BY RowID) = name
then 0 else 1 end as R
from
(
select DATE,NAME,
row_number() OVER ( ORDER BY (select 1)) AS 'RowID'
from #TableName
)A
)B
)C
order by ROwiD
出力:
ありがとう回答。しかし、これを使うと、Group_Numが最後の3行の "1"として返されます。私は3つの名前が必要です(名前は同じですが)。 –
あなたが使用することができDENSE_RANK:
SELECT Date
, Name
, ROW_NUMBER() OVER(Partition By Name Order By Name, Date) as Row_Num
, DENSE_RANK() Over(order by Name) as Group_Num
FROM #Table
あなたの答えをありがとう。しかし、これを使うと、Group_Numが最後の3行の "1"として返されます。私は3つの名前が必要です(名前は同じですが)。 –
画像を削除し、DDL + DMLとして、サンプルデータを追加し、また、ご提示くださいあなたが現在持っている質問。 –
http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557#285557 –