□オラクルのデータ(テーブル名:abc)
-------------------------------------------------
列名 x y z date qq
-------------------------------------------------
a a a 2003/12/1 a
b b b 2003/01/01 b
a a a 2003/12/14
b b b 2005/12/30
□結果
-------------------------------------------------
列名 x y z date qq
-------------------------------------------------
a a a 2003/12/14 a
b b b 2005/12/30 b
上の結果を出したい時、SQLで
"SELECT x,"_
& "y," _
& "z," _
& "Max(date) AS abc2, qq FROM abc" _
& "GROUP BY x," _
& "y," _
& "z," _
& "qq"
としたらエラー「要求された名前、または序数に対応する項目がコレクションで見つかりません」
と出てしまいます。
データベースはオラクルです。
正しい書き方を教えて下さい。
No.3ベストアンサー
- 回答日時:
もっと良い方法があるような気がしますが。
。。select a.x,a.y,a.z,a.date,a.qq from abc a,
(select x,y,z,max(date) wdate from abc group by x,y,z) b
where a.x=b.x and a.y=b.y and a.z=b.z and a.hiduke=b.wdate
って感じで動きました。
あんまり速くなさそうですね(^^ゞ
参考になれば、幸いです。
No.4
- 回答日時:
環境が無いので確認はしてませんが、
>"SELECT x,"_
> & "y," _
> & "z," _
> & "Max(date) AS abc2, qq FROM abc" _
> & "GROUP BY x," _
> & "y," _
> & "z," _
>& "qq"
のうち
"Max(date) AS abc2, qq FROM abc" _
の部分を
"Max(date) AS abc2, qq FROM abc " _
としてやれば動くんじゃないでしょうか?
(abcの後ろに半角スペース入れてます)
この回答への補足
解決しました。
MAX関数を使った場合、表示する項目名をAS以降の自分で付けた名前にしなければならないということを知りませんでした、、。
色々試すだけで、よく分からないでやると、こういう事になるんですね。
どうもありがとうございました。
No.2
- 回答日時:
項目「qq」の値は最新の日付が格納されているレコードがNULL
の場合は他のレコードから補完する必要があるということでしょうか?
補完する場合は基準についてもう少し教えてください。
この回答への補足
申し訳ございません。データを間違えました。
table name : abc
-------------------------------------------------
x y z date qq
-------------------------------------------------
a a a 2003/12/01 a
b b b 2003/01/01 b
a a a 2003/12/14 a
b b b 2005/12/30 b
-------------------------------------------------
です。NULL の場合、他のレコードから補完する必要はありません。
No.1
- 回答日時:
select * from abc
where (x,y,z,date)
=
(select x,y,z,max(date) from abc
group by x,y,z
)
これでは、だめでしょうか??
実際今、環境がないので確認できないのですが・・。
この回答への補足
ありがとうございます。
*-------------------------
"SELECT * FROM abc WHERE (x, y, z, date, qq)
=
(SELECT x, y, z, MAX(date), qq FROM abc GROUP BY x, y, z, qq)"
*-------------------------
としましたが、エラーになってしまします。。
結果の記述も悪かったので、もう一度書かせて頂きます。
----------------------------
x y z date qq
----------------------------
a a a 2003/12/14 a
b b b 2005/12/30 b
----------------------------
です。
単純に、重複するものを表示しないで「date」が最大値のものを表示するようにしたいだけなのですが、SQL難しいです。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- PostgreSQL postgreSQL カラムの全ての値を取得したい 3 2022/10/07 12:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データ更新用のphpの記述でデー...
-
PHPとMysqlを使用した集計表の...
-
SQLローダーCSV取込で、囲み文...
-
単一グループのグループ関数で...
-
count関数の値をwhere句で使用...
-
AccessのSQL文で1件のみヒット...
-
select文の実行結果に空白行を...
-
Oracleで「文字が無効です」の...
-
SELECT FOR UPDATE で該当レコ...
-
大量レコードをTRUNCATEせずに...
-
<SQL>重複しているデータの場合...
-
【PL/SQL】FROM区に変数を使う方法
-
レコードの登録順がおかしい
-
テーブルの最後(最新)のレコー...
-
SELECTした合計値をそのまま割...
-
where句中のtrim関数について
-
2つの列が同じ値の行を取得するSQL
-
int型フィールドにnullを登録で...
-
1の行を固定した上でVBAを用い...
-
VC++ (ADO) で Access の Yes/N...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHP+MySQLで月ごとの数量を表...
-
PHPとMysqlを使用した集計表の...
-
【PL/SQL】DATE型の時刻の表示...
-
JOINを使った文で、date > now();
-
日替わりメッセージを表示させ...
-
更新履歴を古い順に表示させる...
-
UNIXの時間はどう変更すれ...
-
掲載日と更新日の管理の仕方
-
現時刻とjson(オブジェクト形...
-
MySQLのUPDATE文でサブクエリ
-
php mysql データ登録
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
select文の実行結果に空白行を...
-
<SQL>重複しているデータの場合...
-
エクセルのソートについて
-
【PL/SQL】FROM区に変数を使う方法
-
単一グループのグループ関数で...
-
count関数の値をwhere句で使用...
-
複数のテーブルから値を合計出...
おすすめ情報