问题组织数据

时间:2011-07-24 09:48:40

标签: 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中的表来实现此目的。我没有数据库背景。我很困惑,解决这个问题的最佳方法是什么。

2 个答案:

答案 0 :(得分:3)

  

如何找到匹配日期以将其放入in(…)

select的{​​{3}}似乎接受子查询,例如:

select distinct(Date) from DbTable

附录:如果使用子查询不能接受XML,则可以使用单独的查询来确定所需的不同值。作为一个具体示例,以下方法将从List返回DBTable个唯一日期。该列表适用于构建数据透视表的IN子句。

private static List<Date> getDates(Connection conn) throws SQLException {
    List<Date> list = new ArrayList<Date>();
    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;
}

附录:可在pivot_in_clause教程和JDBC™ Database Access中找到其他指南。

答案 1 :(得分:2)

如果您正在使用oracle数据库,那么您可以使用PIVOT函数来实现此目的,如下所示 -

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

希望它能解决你的问题。