非常に初歩的な事で恐縮ですが、
以下のデータを抽出するsql文の書き方を模索しています。
環境:SQLSERVER2005
| 列1| 列2 |
+---+---+
| 1 | A |
| 1 | B |
| 1 | C |
| 1 | D |
| 2 | F |
| 2 | G |
| 2 | H |
| 3 | X |
| 3 | Y |
| 3 | Z |
上記のテーブルがあるとします。
列1でグループした値で、1レコード目の列2を抽出したいのです。
出力結果としては、
列1列2
+--+--+
1,A
2,F
C,X
としたいのです。
列1でGROUPしてしまうと列2の内容を集約しないといけないので困っています。
ご教授いたけないでしょうか?
No.3ベストアンサー
- 回答日時:
SQL Server 2005では、Oracleでいう分析関数が実装されています。
select
列名1,
列名2
from
(select
rank() over(partition by 列1 order by 列2) as rk,
列1,列2
from 表名) as x
where rk=1
chukenkenkouさん
アドバイス有難う御座いました。
お返事が遅くなり申し訳ありませんでした。
まさにこれです。
partitionと言う関数があったのですね。
有難う御座いました。
No.2
- 回答日時:
#本題と関係ありませんが・・
いや、「1アイテム目」が「必ず昇順に返ってくる」とか「登録順に返ってくる」とか「物理的な配置順に返ってくる」という保証は、いかなるデータベースでもあり得ません。orderを指定しなければ「順不同(になることもある)」がデータベースです。SQLServerも例外ではありません。
アドバイスありがとうございます。
もちろん、先頭抽出条件においてはorder等のデータ整列調整は行います。
有難う御座いました。
No.1
- 回答日時:
列2の「1レコード目」というのがどういう意味かわかりませんが(データベースではorderがない状態で1レコード目という概念はあり得ないので)「最小のもの」でよければ
select 列1, min(列2) as 列2_min from テーブル group by 列1
でいいと思います。
shimixさん
回答ありがとうございました。
1レコード目と言うのはおかしな表現でした。
失礼致しました。
1アイテム目と言う事で有ってますでしょうか。
>select 列1, min(列2) as 列2_min from テーブル group by 列1
なるほど、値を大小区別できるように抽出しておいてやれば、取得出来ますね。また、別の列にROW_NUMBERを切ってやれば大小関係なく抽出できそうです。
有難う御座いました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle 列1と列2の関係性で列3の条件に一致するレコードを抽出したい 1 2022/04/13 07:46
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Excel(エクセル) Excelの関数でこんな処理ができますか 1 2023/02/08 13:46
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) Excel>マクロ>特定のセルで同じ情報が登録されている行を1行にまとめたい(文字連結) 6 2023/01/05 16:30
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
sqlserverにはグループ集計のfirstとlastがありません??
SQL Server
-
[SQL]重複内容を持つデータから1件抽出かつ複数のカラムを表示したい
その他(データベース)
-
SELECTで1件のみ取得するには?
Oracle
-
-
4
GROUP BYを行った後に結合したい。
Oracle
-
5
group byで最後のレコードを抽出したい
MySQL
-
6
SQLで特定の項目の重複のみを排除した全項目を取得する方法
その他(プログラミング・Web制作)
-
7
各伝票に対して明細を1行目だけ表示したい
SQL Server
-
8
Oracle:グループごとに最大日付の行を1件取得
Oracle
-
9
group byで指定したカラム以外のカラムの値を取得したい
PostgreSQL
-
10
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
11
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
12
オラクルではできるのにSQLSERVERではサブクエリーで複数キーを指定できない?
SQL Server
-
13
SQL文で右から1文字だけ削除するやり方
MySQL
-
14
含まない言い方ってどうしたらいいんでしょうか
日本語
-
15
GROUP BYを使ったSELECT文の総件数を求める方法
SQL Server
-
16
datetime型でNULL値を入れたい。
SQL Server
-
17
AccessのSQL文で1件のみヒットしたら終了させる構文。
その他(データベース)
-
18
テーブルの最後(最新)のレコードを抽出したい
MySQL
-
19
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
20
テーブルに主キーを作らないデメリットは?
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外部参照してるキーを主キーに...
-
SQLで列名を変数にできないでし...
-
SELECT 文 GROUP での1件目を...
-
列のヘッダーを含めるのをデフ...
-
伝票番号、品番、在庫としてマ...
-
テーブル列数とデータファイル...
-
Access:クエリーにて集計後に...
-
項目名に大文字と小文字の混在...
-
UPDATE文のWHERE条件に他のテー...
-
特定の文字列で列を区切るには?
-
特定の列だけをGROUP BYしたい時
-
複数列の最大値を求めたい
-
列番号による項目の取得について
-
SQLによる"あいうえお"順でソー...
-
SQLのクエリ、又はプロシージャ...
-
IDENTITY列の更新で失敗する
-
Accessでの全データから空白削除
-
DB2のSQL
-
【VB.NET】日付型の列にNULLを...
-
差し込み後、元データを変更し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT 文 GROUP での1件目を...
-
外部参照してるキーを主キーに...
-
SQLで列名を変数にできないでし...
-
列のヘッダーを含めるのをデフ...
-
Access:クエリーにて集計後に...
-
列番号による項目の取得について
-
【VB.NET】日付型の列にNULLを...
-
UPDATE文のWHERE条件に他のテー...
-
SQLによる"あいうえお"順でソー...
-
特定の文字列で列を区切るには?
-
テーブル列数とデータファイル...
-
項目名に大文字と小文字の混在...
-
特定の列だけをGROUP BYしたい時
-
Accessでの全データから空白削除
-
複数列の最大値を求めたい
-
SQLのクエリ、又はプロシージャ...
-
DB2のSQL
-
SQLについて質問です。 テーブ...
-
IDENTITY列の更新で失敗する
-
Accessのリストボックスについて
おすすめ情報