前提として下記のようなテーブルがあります。
テーブル名:test
フィールド:
1)id: varchar, not null
2)name: varchar
3)date: timestamp with time zone, not null
このテーブルに下記のようなレコードがあります。
'00001', 'A', '2005-01-01 00:00:00'
'00001', 'B', '2005-07-01 00:00:00'
'00001', 'C', '2005-11-01 00:00:00'
'00002', 'X', '2005-01-20 00:00:00'
'00002', 'Y', '2005-07-20 00:00:00'
'00002', 'Z', '2005-11-20 00:00:00'
■今やりたいこと
このテーブルからidごとにdateフィールド値が最近のレコードを取得したい。
■やってみたこと
下記SQLを発行しました。
>select id, max(date) from test group by id order by id
結果==>
00001 2005-11-01 00:00:00
00002 2005-11-20 00:00:00
実際はnameフィールドの値も取得したいのですが、group by句を使うとフィールド指定ができませんでした。
■だめだったSQL
select id, name, max(date) from test group by id order by id
どのようにSQLを書けばよろしいでしょうか?
No.2ベストアンサー
- 回答日時:
初めに、PrimaryKeyがIDとNAMEという事を想定します。
SELECT TEST.ID, TEST.NAME, WK.DATE
FROM TEST,
(
SELECT TEST.ID, MAX(TEST.DATE) AS DATE
FROM TEST
GROUP BY TEST.ID
) WK
WHERE TEST.ID = WK.ID AND
TEST.DATE = WK.DATE
ORDER BY TEST.ID
動作確認済み。
No.1
- 回答日時:
ORACLEの場合だったら以下で出来たはず。
where条件2項目をカッコでくくるのがミソ。
PostgresSQLでも通用するか、結果を教えてください。
select id, name, date from test
where (id, date) =
(
select (id, max(date)) from test group by id order by id
)
この回答への補足
回答ありがとうございます。
早速PostgreSQLで試したところ、
ERROR: more than one row returned by a subquery used as an expression
とエラーが返ってきました。どうやらサブクエリからの複数列の取得がPostgreSQLではサポートされていないようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- MySQL MYSQL エラー 2 2022/10/18 11:37
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- MySQL php テーブルを作れない 2 2022/11/17 18:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブルからのselectにおいて...
-
postgreSQLのint型は桁数指定が...
-
pl/pgsqlで変数の扱い
-
賢いSQL文がわからない
-
UNIQUEをつけたときのINDEXテー...
-
クエリアナライザのsp_helpコマ...
-
postgreSQLの正規表現
-
2つの異なるテーブルを和結合し...
-
SQL文の実行に苦労しています。
-
SQL SELECT文 別テーブルのレコ...
-
チェックボックスから、データ...
-
全テーブルのデータの行数
-
データを削除しても表領域の使...
-
異なるスキーマからデータを抽...
-
特定のスキーマのテーブルを一...
-
Viewにインデックスは張れ...
-
DELETE文でFROM句を省略した場合
-
Access レコードを追加できませ...
-
datapumpの実行方法について
-
CLOB型へのINSERT
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
postgreSQLのint型は桁数指定が...
-
テーブルからのselectにおいて...
-
PostgressからMySQL(MariaDB)...
-
UNIQUEをつけたときのINDEXテー...
-
クエリアナライザのsp_helpコマ...
-
SQL SELECT文 別テーブルのレコ...
-
SQL文作成のお願い
-
3つのテーブルの処理について
-
全テーブルのデータの行数
-
SQLで検索結果の記事を表示したい
-
近い時間によるテーブル結合
-
PostgresSQL8.4でツリー上に取...
-
SELECT結果から重複行を除く方法
-
Perl DBI でSELECT ilikeの結果...
-
2つの異なるテーブルを和結合し...
-
賢いSQL文がわからない
-
チェックボックスから、データ...
-
Viewにインデックスは張れ...
-
データを削除しても表領域の使...
-
異なるスキーマからデータを抽...
おすすめ情報