Java 组织数据的问题
我有一张如下表Java 组织数据的问题,java,sql,swing,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 1
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中的表来实现此目的。我没有数据库方面的背景。我不知道解决这个问题的最佳方法是什么。如果您使用的是oracle数据库,那么您可以使用PIVOT函数来实现这一点,如下所示-
select * from JTable
pivot(sum(value) for date in ('11-Feb-2011','12-Feb-2011','13-Feb-2011'));
希望它能解决您的问题。如果您在这里使用的是oracle数据库,那么您可以使用PIVOT函数来实现这一点,如下所示-
select * from JTable
pivot(sum(value) for date in ('11-Feb-2011','12-Feb-2011','13-Feb-2011'));
希望它能解决你的问题
如何在(…)中找到将其放入的匹配日期
select
的字段似乎接受子查询,例如:
select distinct(Date) from DbTable
附录:如果子查询不能接受XML,则可以使用单独的查询来确定所需的不同值。作为一个具体示例,以下方法将从DBTable
返回唯一日期的列表。该列表适用于在pivot的
子句中构造
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;
}
私有静态列表getDates(连接连接)引发SQLException{
列表=新的ArrayList();
StringBuilder sb=新的StringBuilder();
语句st=conn.createStatement();
st.execute(“从数据库表中选择不同的(日期”);
ResultSet rset=st.getResultSet();
while(rset.next()){
添加(rset.getDate(1));
}
退货清单;
}
附录:附加指南可在教程和中找到
如何在(…)
中找到将其放入的匹配日期
select
的字段似乎接受子查询,例如:
select distinct(Date) from DbTable
附录:如果子查询不能接受XML,则可以使用单独的查询来确定所需的不同值。作为一个具体示例,以下方法将从DBTable
返回唯一日期的列表。该列表适用于在pivot的
子句中构造
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;
}
私有静态列表getDates(连接连接)引发SQLException{
列表=新的ArrayList();
StringBuilder sb=新的StringBuilder();
语句st=conn.createStatement();
st.execute(“从数据库表中选择不同的(日期”);
ResultSet rset=st.getResultSet();
while(rset.next()){
添加(rset.getDate(1));
}
退货清单;
}
附录:更多指南可在教程和中找到。感谢您的回复。如何使其通用。我的意思是如何在运行时找到匹配的日期并将其放入in(…)方法中。以上只是一个例子。那里有很多记录。我不会硬编码。我认为在纯SQL中,除了为PivotingTanks rabudde显式命名列之外,没有其他方法。。拉布德所说的是你所评论问题的正确答案。。。。在sql中没有任何方法。。。但是我认为在Pl/sql中我们可以做到这一点。。。但还没有在pl/sql中尝试过……)我也用PL/sql做了测试。。。在plsql中,我们可以做这种报告@如果您需要pl/sql,请告诉我code@Pratik我想用Java构建这种报告。我只是想得到SQL逻辑,这样我就可以用Java编写类似的代码。如果您分享这个查询,那将是一个很大的帮助,因为我是SQL方面的新手。非常感谢。谢谢你的回复。如何使其通用。我的意思是如何在运行时找到匹配的日期并将其放入in(…)方法中。以上只是一个例子。那里有很多记录。我不会硬编码。我认为在纯SQL中,除了为PivotingTanks rabudde显式命名列之外,没有其他方法。。拉布德所说的是你所评论问题的正确答案。。。。在sql中没有任何方法。。。但是我认为在Pl/sql中我们可以做到这一点。。。但还没有在pl/sql中尝试过……)我也用PL/sql做了测试。。。在plsql中,我们可以做这种报告@如果您需要pl/sql,请告诉我code@Pratik我想用Java构建这种报告。我只是想得到SQL逻辑,这样我就可以用Java编写类似的代码。如果您分享这个查询,那将是一个很大的帮助,因为我是SQL方面的新手。非常感谢。我曾尝试将子查询放在pivot中,但在简单pivot中失败。。。它与XML关键字一起工作,但我不希望使用clob或长数据类型。。。我想进入不同的专栏。。。如果你会写,请写。。这对我很有帮助。啊,我明白了。然后首先运行selectdistinct
查询,然后使用结果集从返回的值构造in
子句。它会创建不同的列吗???我想不会。。。。如果可能的话,请给出例子。。。我试图这样做,但失败了。。。如果可以,请给出sql语句…应该有一个函数用于此,但我不知道..:(…这对其他人也会有帮助..好的,现在…实际上我的问题是如何为动态日期数创建不同的列…但我让你想知道SQL查询本身在java中的性质…对吗?意思是在获得所有不同的日期后,你想把每个日期都放在java程序中以准备这种SQL…但是我如果你知道如何编写这样的SQL,请告诉我..我会以通常的方式使用语句
或PreparedStatement
。我曾尝试将子查询放在pivot中,但在简单pivot中失败…它使用XML关键字工作,但我不希望使用clob或长数据类型…我想在不同的列中…如果你可以编写te请这样做。这对我很有帮助。啊,我明白了。然后先运行select distinct
查询,然后使用结果集从返回的值构造in
子句。它会创建不同的列吗?我想不会。如果可能的话,请给出示例…我试图这样做,但失败了。。。如果可以,请给出sql语句…应该有一个函数,但我不知道