問題整理データ

java sql swing
問題整理データ

私は以下の表を持っています

RMG Date        Value
YA  11/02/2001  94
YB  11/02/2011  63
YC  11/02/2011  35
YA  12/02/2011  32
YB  12/02/2011  45
YC  12/02/2011  51
YA  13/02/2011  32
YB  13/02/2011  45
YC  13/02/2011  51

要件に基づいて、一般的な日付を抽出し、次のように表示したい

  RMG         11/02/2011      12/02/2011    13/02/2011
  YA           94                 32             32
  YB           63                 45             45
  YC           35                 51             51

JavaまたはSQLでテーブルを使用してこれを達成するにはどうすればよいですか。 データベースのバックグラウンドがありません。 これを修正するための最良のアプローチは何であるか混乱しています。

  1  0


ベストアンサー

_
一致する日付を見つけて「in(…)」に入れるにはどうすればよいですか?
_

「select」のhttp://download.oracle.com/docs/cd/E11882_01/server.112/e17118/statements_10002.htm#SQLRF01702[pivot_in_clause]は、次のようなサブクエリを受け入れるように見えます。

select distinct(Date) from DbTable

補遺:XMLがサブクエリで受け入れられない場合、別個のクエリを使用して、必要な個別の値を決定できます。 具体的な例として、次のメソッドは「DBTable」から一意の日付の「List」を返します。 このリストは、ピボットの「IN」句を作成するのに適しています。

private static List getDates(Connection conn) throws SQLException {
    List list = new ArrayList();
    StringBuilder sb = new StringBuilder();
    Statement st = conn.createStatement();
    st.execute("select distinct(Date) from DbTable");
    ResultSet rset = st.getResultSet();
    while (rset.next()) {
        list.add(rset.getDate(1));
    }
    return list;
}

補遺:追加のガイダンスは、http://download.oracle.com/javase/tutorial/jdbc/ [JDBC™Database Access]チュートリアルおよびhttp://download.oracle.com/docs/cd/E11882_01/にあります。 java.112 / e16548 / toc.htm [Oracle®Database JDBC開発者ガイド]。

3


これでOracleデータベースを使用している場合、以下のようにPIVOT関数を使用してこれを実現できます-

select * from JTable
pivot(sum(value) for date in ('11-Feb-2011','12-Feb-2011','13-Feb-2011'));

それがあなたの問題を解決することを願っています。

2


タイトルとURLをコピーしました