Oracel9 のSQLについて教えてください。
データの削減(サマリ)を狙っているのですが・・・
下記の様なデータを結合?したいのですが、
どのようにすればいいかわかりません・・・
テーブル名:乗車時間
氏名、乗り物、乗車開始時間、乗車終了時間
Aさん、車、08:15、08:30
Aさん、車、08:30、09:00
Aさん、車、09:00、09:30
このデータを・・・・
氏名、乗り物、乗車開始時間、乗車終了時間
Aさん、車、08:15、09:30
の一行にしたいのです。
VB6とSQLを組み合わせれば、なんとか行けるのですが、
(大分、VB6に依存してしまう・・・)
Oracle側だけの処理で何とかしたいのです。
こうなると、やはりストアドプロシージャーを使用するしかないのでしょうか??
何卒、皆様のお知恵を貸して下さい。お願いします。
No.3ベストアンサー
- 回答日時:
思いつくのは、こんな感じかなぁ。
select
x.氏名,
x.乗り物,
x.乗車開始時間,
(
select max(y.乗車終了時間) from t y
start with y.氏名=x.氏名 and y.乗り物=x.乗り物 and y.乗車開始時間=x.乗車開始時間
connect by prior y.氏名=y.氏名 and prior y.乗り物=y.乗り物 and prior y.乗車終了時間=y.乗車開始時間
)
from t x
where
not exists (select 1 from t z where z.氏名=x.氏名 and z.乗り物=x.乗り物 and z.乗車終了時間=x.乗車開始時間)
;
返信が遅くなり申し訳ございません。
迅速な回答ありがとうございました^^
バッチリです!! とても勉強になりました♪
ありがとうございます☆
また分からない時、投稿すると思いますので、
その際見かけましたら宜しくお願いします♪
No.4
- 回答日時:
No2です。
回答したあとで、もうすこし簡略化できることに気付きました。
(私のやり方だと全件Connectするので)
SELECT 氏名,乗り物,MIN(乗車開始時間),MAX(乗車終了時間)
FROM
(SELECT MIN(GRP) GRP,氏名,乗り物,乗車開始時間,乗車終了時間
FROM
(SELECT ROWNUM-LEVEL GRP,氏名,乗り物,乗車開始時間,乗車終了時間
FROM 乗車時間
CONNECT BY PRIOR 氏名=氏名 AND PRIOR 乗り物=乗り物 AND PRIOR 乗車終了時間=乗車開始時間
ORDER SIBLINGS BY 氏名,乗り物,乗車開始時間)
GROUP BY 氏名,乗り物,乗車開始時間,乗車終了時間)
GROUP BY 氏名,乗り物,GRP
ORDER BY 1,2
でも、それを踏まえても、No.3さんの書かれたクエリの方がわかりやすいでしょうね。
返信が遅くなり申し訳ございません。
迅速な回答ありがとうございました^^
2度もそれも簡略して、書き込んでくれた事
本当にありがとうございます。
書き方の違いがわかってほんとに感謝です。
SQL初心者にはとても勉強になります。
また分からない時、投稿すると思いますので、
その際見かけましたら宜しくお願いします♪
No.2
- 回答日時:
CONNECT BYは9iでも使えましたよね。
ということで、その方法ならばできますが、あまりスマートにはいきません。もしわからなければ、これよりスマートな回答が出なかったときには追加で説明します。
SELECT 氏名,乗り物,MIN(乗車開始時間),MAX(乗車終了時間)
FROM
(SELECT MIN(GRP) GRP,氏名,乗り物,乗車開始時間,乗車終了時間
FROM
(SELECT ROWNUM-LEVEL GRP,氏名,乗り物,乗車開始時間,乗車終了時間
FROM
(SELECT 氏名,乗り物,乗車開始時間,乗車終了時間 FROM 乗車時間
UNION ALL
SELECT 氏名,乗り物,NULL,乗車開始時間 FROM 乗車時間)
START WITH 乗車開始時間 IS NULL
CONNECT BY PRIOR 氏名=氏名 AND PRIOR 乗り物=乗り物 AND PRIOR 乗車終了時間=乗車開始時間
ORDER SIBLINGS BY 氏名,乗り物,乗車開始時間)
WHERE 乗車開始時間 IS NOT NULL
GROUP BY 氏名,乗り物,乗車開始時間,乗車終了時間)
GROUP BY 氏名,乗り物,GRP
ORDER BY 1,2,3
No.1
- 回答日時:
select 氏名,乗り物,
min(乗車開始時間) 乗車開始時間,
max(乗車終了時間) 乗車終了時間
from 乗車時間
group by 氏名,乗り物
でいかがでしょうか?
この回答への補足
早速の回答ありがとうございます。
説明不足で申し訳ないのですが、データは
氏名、乗り物、乗車開始時間、乗車終了時間
Aさん、車、08:15、08:30
Aさん、車、08:30、09:00
Aさん、車、09:00、09:30
Aさん、車、09:15、09:45
Bさん、バス、08:10、08:15
Bさん、バス、08:15、08:25
Bさん、バス、08:45、08:55
とあった場合、出力するデータは、
氏名、乗り物、乗車開始時間、乗車終了時間
Aさん、車、08:15、09:30
Aさん、車、09:15、09:45
Bさん、バス、08:10、08:25
Bさん、バス、08:45、08:55
の様なデータが欲しいのです。乗車開始時間と乗車終了時間が
繋がるレコードを省いて、結合?したいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 電車・路線・地下鉄 JR西日本のダイヤ改正で今後行われそうなことは何ですか? 1 2022/07/24 12:30
- 新幹線 気象や事故などの影響で爆延の新幹線深夜到着 8 2023/08/17 05:27
- 電車・路線・地下鉄 Suicaについて(定期券タイプは除く) 7 2022/10/17 13:17
- 中古車 車の購入についてご相談したいです。 車の購入について、買い換えるか乗り続けるかご相談です。 元々ミニ 2 2022/09/14 14:15
- タクシー 大阪駅の桜通口のタクシー乗り場まで、詳しい方お願い致します 5 2022/04/27 10:13
- 国産車 未だに時代遅れの新車を発売する日本の自動車メーカーは終わりですよね? 14 2023/08/28 10:30
- ストレス 女性車掌が不機嫌な理由は何だと思いますか? 1 2022/09/09 21:28
- 介護 この福祉車両の使用方法は法律に違反しているでしょうか 2 2022/08/17 06:11
- その他(悩み相談・人生相談) 私と同じような方いますか 私は多分、俗に言うせっかちなんだと思います バイト前など外出する15分前に 4 2023/01/29 10:36
- その他(悩み相談・人生相談) とあるスポーツセンターで友達とナンパをしていて女の子3人組にしたら、 1回目は入り口からヤンキー急に 4 2023/01/07 02:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
NEC Wi-Fiルーター aterm-786cd...
-
「情報がおりる」の「おりる」...
-
電車の中でPCやってて下車する...
-
電車内で急病人が出たとき、電...
-
飲み会でほとんど連絡つかず深...
-
電車の室内の高さ(天井高)
-
電車でたまに、異常に臭い人が...
-
部活を辞める時の家庭の事情っ...
-
電車での対処方法
-
武蔵野線の朝のラッシュ状況を...
-
何故わざわざ出入り口で立ち止...
-
電車のホームなどで「3列にお...
-
電車の居眠り時、横に揺れるの...
-
最近駅での歩き方や並び方、電...
-
電車で隣に十分にスペースがあ...
-
改札を出ないと往復してOK?
-
エレベーターに関する入る、乗...
-
電車に乗ったことがありません...
-
電車での飲食に関してです。 自...
-
パニック障害なのか本人もわか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
電車定期券を2枚に分ける必要が...
-
飲み会でほとんど連絡つかず深...
-
大崎駅で埼京線からりんかい線...
-
電車での対処方法
-
「情報がおりる」の「おりる」...
-
電車の中でPCやってて下車する...
-
新宿三丁目駅からメトロプロム...
-
電車内で急病人が出たとき、電...
-
改札を出ないと往復してOK?
-
電車の室内の高さ(天井高)
-
何故わざわざ出入り口で立ち止...
-
西武新宿駅→都営新宿線へ乗り換え
-
ランドマークタワーから赤レン...
-
シリトリ部屋!お暇なときにど...
-
電車で…座席を…泣
-
電車でたまに、異常に臭い人が...
-
舞浜駅から原宿へ行くにはどの...
-
武蔵野線の朝のラッシュ状況を...
-
部活を辞める時の家庭の事情っ...
-
終電を乗り過ごす人又はそんな...
おすすめ情報