C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
Re[4]: グループ別に連番取得する方法を押してください。
(過去ログ 152 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 5 記事 (1 - 5 表示)] <<
0
>>
■88758
/ inTopicNo.1)
グループ別に連番取得する方法を押してください。
▼
■
□投稿者/ 夜叉丸
(128回)-(2018/09/25(Tue) 10:57:59)
分類:[.NET 全般]
SQLServer2016 を使用しています。
グループに分けて、連番を取得したいのですが
どうすればよいのでしょうか?
具体的には
A 1
A 2
B 3
A 4
B 5
このようなデータがある場合に
A 1 1
A 2 2
A 4 3
B 3 1
B 5 2
として3列目を取得したいのです。
引用返信
編集キー/
編集
■88759
/ inTopicNo.2)
Re[1]: グループ別に連番取得する方法を押してください。
▲
▼
■
□投稿者/ 魔界の仮面弁士
(1860回)-(2018/09/25(Tue) 11:19:18)
■
No88758
(夜叉丸 さん) に返信
> グループに分けて、連番を取得したいのですが
> どうすればよいのでしょうか?
CREATE TABLE TBL
( F1 CHAR(1) NOT NULL, F2 INT NOT NULL
, CONSTRAINT KEY_TBL PRIMARY KEY (F1, F2)
)
INSERT INTO TBL (F1, F2) VALUES
('A', 1), ('A', 2), ('B', 3), ('A', 4), ('B', 5)
SELECT F1, F2, F3 = ROW_NUMBER()
OVER (PARTITION BY F1 ORDER BY F2)
FROM TBL ORDER BY F1, F2
引用返信
編集キー/
編集
■88760
/ inTopicNo.3)
Re[2]: グループ別に連番取得する方法を押してください。
▲
▼
■
□投稿者/ 夜叉丸
(129回)-(2018/09/25(Tue) 11:31:34)
早々の回答ありがとうございました。
いろいろ考えて、長いSQLコードつくって失敗していたのですが、
単純にできたんですね
ありがとうございました。
疑問として、
わたしの VisuzlStudio での SQLビューワーでは
ROW_NUMBER はサポートされていませんと表示されます。
ですが、実行自体はできるのでとりあえずは問題ないのですが
ROW_NUMBER がサポートされていないバージョン以前では
どのようにしてSQLコードを書いていたのでしょうね?
解決済み
引用返信
編集キー/
編集
■88761
/ inTopicNo.4)
Re[3]: グループ別に連番取得する方法を押してください。
▲
▼
■
□投稿者/ 魔界の仮面弁士
(1861回)-(2018/09/25(Tue) 12:25:01)
2018/09/25(Tue) 13:44:09 編集(投稿者)
■
No88760
(夜叉丸 さん) に返信
> わたしの VisuzlStudio での SQLビューワーでは
> ROW_NUMBER はサポートされていませんと表示されます。
Visual Studio のクエリデザイナーは、比較的単純な SQL しか処理できないので、
あまり当てにしない方が良いかも。
> ROW_NUMBER がサポートされていないバージョン以前では
SQL Server 2005 の時点で、ROW_NUMBER 窓関数は使えていましたよね。
https://starzero.hatenablog.com/entry/20100524/1278244716
ROW_NUMBER 関数を使わない手法としては、こんなのとか。
パフォーマンスは落ちますけれども。
SELECT TBL1.F1, TBL1.F2, C = 1 + (
SELECT COUNT(*) FROM TBL AS WK
WHERE WK.F1 = TBL1.F1 AND WK.F2 < TBL1.F2)
FROM TBL AS TBL1
ORDER BY TBL1.F1, TBL2.F2
解決済み
引用返信
編集キー/
編集
■88763
/ inTopicNo.5)
Re[4]: グループ別に連番取得する方法を押してください。
▲
▼
■
□投稿者/ 夜叉丸
(130回)-(2018/09/25(Tue) 16:44:53)
2018/10/02(Tue) 11:34:06 編集(投稿者)
■
No88761
(魔界の仮面弁士 さん) に返信
AND WK.F2 < TBL1.F2
のところ少し悩みましたが理解できました。
この考えがありませんでした。
なので、長文のSQLになってなおかつ動かなかったんです。
ORDER BY TBL1.F1, TBL2.F2 はエラーになりましたが
ORDER BY TBL1.F1, TBL1.F2 に変更しました。
どうもありがとうございました。
解決済み
引用返信
編集キー/
編集
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
管理者用
-
Child Tree
-