C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: データ抽出(SQL)方法について


(過去ログ 119 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■69923 / inTopicNo.1)  データ抽出(SQL)方法について
  
□投稿者/ Tak (1回)-(2014/02/12(Wed) 11:49:53)

分類:[VB.NET/VB2005 以降] 

VB2005 + Oracle10gにて開発しています。

テーブル(テーブル名:TEST、KEY項目:SA_CD,S_CD,R_CD)に
下記のデータが存在した場合の抽出方法をお教えください。
現在、VBのプログラムにて全データをループしデータの抽出を行っていますが、
非常に時間がかかり困っています。
SQLにて抽出を行いたいのですが、方法がよくわかりません。

テーブルデータ
SA_CD   S_CD         R_CD  DATA
AE001   A01-2014-01  1     AA1
AE001   A01-2014-01  2     BB1
AE001   A01-2014-02  1     CC1
AE001   A01-2014-02  2     CC1
AE002   A01-2014-03  1     DD1
AE002   A01-2014-03  2     EE1
AE003   A01-2014-04  1     FF1

抽出したいデータ
SA_CD毎に抽出、S_CD最大値の中でR_CDが一番大きいデータを抽出
AE001   A01-2014-02  2     CC1
AE002   A01-2014-03  2     EE1
AE003   A01-2014-04  1     FF1

申し訳ありませんが宜しくお願い致します。

引用返信 編集キー/
■69924 / inTopicNo.2)  Re[1]: データ抽出(SQL)方法について
□投稿者/ 魔界の仮面弁士 (526回)-(2014/02/12(Wed) 12:08:45)
No69923 (Tak さん) に返信
> SQLにて抽出を行いたいのですが、方法がよくわかりません。

SELECT * FROM TEST WHERE (SA_CD, S_CD, R_CD) IN
(SELECT SA_CD, MAX(S_CD) OVER (PARTITION BY SA_CD)
, MAX(R_CD) OVER (PARTITION BY SA_CD, S_CD) FROM TEST)


でどうでしょう。(未検証)


引用返信 編集キー/
■69927 / inTopicNo.3)  Re[2]: データ抽出(SQL)方法について
□投稿者/ Tak (2回)-(2014/02/12(Wed) 13:07:37)
No69924 (魔界の仮面弁士 さん) に返信
> ■No69923 (Tak さん) に返信
>>SQLにて抽出を行いたいのですが、方法がよくわかりません。
>
> SELECT * FROM TEST WHERE (SA_CD, S_CD, R_CD) IN
> (SELECT SA_CD, MAX(S_CD) OVER (PARTITION BY SA_CD)
> , MAX(R_CD) OVER (PARTITION BY SA_CD, S_CD) FROM TEST)
>
>
> でどうでしょう。(未検証)
>
>

魔界の仮面弁士様
返信ありがとうございます。
そのものズバリ、解決致しました。
非常に助かりました。ありがとうございます。
解決済み
引用返信 編集キー/
■69933 / inTopicNo.4)  Re[3]: データ抽出(SQL)方法について
□投稿者/ 通りすがり (5回)-(2014/02/12(Wed) 23:17:00)
OVER なんて目が点になりましたよ。MS得意の拡張SQLですか。
引用返信 編集キー/
■69934 / inTopicNo.5)  Re[4]: データ抽出(SQL)方法について
□投稿者/ のぶ (54回)-(2014/02/13(Thu) 01:15:54)
No69933 (通りすがり さん) に返信
> OVER なんて目が点になりましたよ。MS得意の拡張SQLですか。
Oracleですよ。
SQL Serverにもありますけど。
解決済み
引用返信 編集キー/
■69940 / inTopicNo.6)  Re[5]: データ抽出(SQL)方法について
□投稿者/ 魔界の仮面弁士 (527回)-(2014/02/13(Thu) 10:38:37)
No69933 (通りすがり さん) に返信
> OVER なんて目が点になりましたよ。MS得意の拡張SQLですか。
SQL:2003 以降の標準SQLで規定されていますよ。
http://bit.ly/NDXqOI

Access だと、ANSI SQL89/92 までのサポートに限定されますが。


No69934 (のぶ さん) に返信
> Oracleですよ。
> SQL Serverにもありますけど。
質問者は Oracle10g とのことでしたね。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -