
SQL分でわからないことがあるので質問させてください。
Aというテーブルに、
番号と処理通番(ユニーク)の2つカラムがあります。
Aテーブルから重複した番号とその処理通番を
上から4件まで取得したいのですが、
-----------------------------
SELECT A.番号,A.処理通番
FROM A
INNER JOIN
(SELECT 番号
FROM A
GROUP BY 番号
HAVING COUNT(*) > 1) AS B
ON (A.番号 = B.番号)
ORDER BY A.番号,A.処理通番
-----------------------------
のSQLでは重複した番号のデータを
全て取得してしまいます。
番号別に4件まで取得したいのですが、
どのようなSQLを書けば取得できますか?
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
古いSQLserverでも・・
SELECT A1.番号,A1.処理通番
FROM A as A1,A as A2
WHERE
A1.番号 IN (SELECT 番号 FROM A GROUP BY 番号 HAVING COUNT(*) > 1) and
A1.番号=A2.番号 and A1.処理番号>A2.処理番号
group by A1.番号,A1.処理通番
having count(*) < 4
な感じで書けるんじゃないかな。
分析関数を使う方が処理が速いので、2005を使っているなら、A1に書かれているSQL文が良いと思いますけどね。
No.1
- 回答日時:
(1)SQL Serverのバージョンは、何ですか?
(2)処理通番を上から4件まで取得したい
上から4件とは、昇順でですか?
4件に満たない場合は、その分だけ得たいのでしょうか?
<SQL例>SQL Server 2005が前提です
select x.番号,x.処理通番,rank
from
(select 番号,処理通番,rank() over(partition by 番号 order by 処理通番) as rank
from A) as x
inner join
(select 番号
from A
group by 番号
having count(*)>1) as y
on x.番号=y.番号
where rank<=4
order by x.番号,x.処理通番
;
SQLServerのバージョンは2000を使ってます。
2005にバージョンアップした際に試して見ます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Oracle sqlのupdate文で質問です。 テーブルBの番号をキーにテーブルAの身長をテーブルBの身長に更新 2 2022/11/02 15:15
- Oracle Oracleですがsqlで質問です。 サブクエリ内で番号というカラムで昇順の1レコード目を取得したい 3 2023/05/22 10:02
- Visual Basic(VBA) 先ほど、回答者様によって教えていただいたのですがどうしたらいいか分かりません。 ユーザーフォーム上に 2 2023/02/21 22:25
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessで別テーブルの値をフォ...
-
[Access]異なるレコード間の文...
-
最新の日付とその金額をクエリ...
-
access 自動採番 年が変わる...
-
候補キーの求め方
-
vba 直前の操作はキャンセルさ...
-
【SQL】existsでの商演算
-
Access 文字+年ごとの自動採番
-
【Access】選択クエリのグルー...
-
質問です。 下記のテーブルとデ...
-
条件をつけて日付の古い行を抜...
-
アクセスで「空き番」の確認
-
access 自動採番 「10-AA-000...
-
【アクセスVBA】テーブルにフィ...
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
OracleのSQL*PLUSで、デー...
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
実績累計の求め方と意味を教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessで別テーブルの値をフォ...
-
最新の日付とその金額をクエリ...
-
【アクセスVBA】テーブルにフィ...
-
access 自動採番 年が変わる...
-
Accessで日付が変わると番号が...
-
Accessでのレコード存在チェック
-
Recordset.FindFirstについて
-
vba 直前の操作はキャンセルさ...
-
access 自動採番 「10-AA-000...
-
Access 文字+年ごとの自動採番
-
アクセスで「空き番」の確認
-
[Access]異なるレコード間の文...
-
条件をつけて日付の古い行を抜...
-
【Access】選択クエリのグルー...
-
Access:抽出して、色をつけたい。
-
ACCESSでの行番号の自動採番
-
Access VBAで更新履歴を追いたい
-
sqlで質問です。 Aテーブルの登...
-
Oracle 8i に入っている値が、...
-
質問です。 下記のテーブルとデ...
おすすめ情報