您的位置:

java行转列的例子(java实现动态行转列)

本文目录一览:

java行列值的互换?

二维数组的行列值互换,又叫矩阵的转置,数组a转置后应该是1,4;2,5;3,6;

完整的矩阵转置的Java程序如下

按照你的要求输出1,2;4,5;3,6;的程序

问一个java列转行的实现逻辑

c:forEach var="book" items="${要显示的数据集合}" varStatus="j"

c:choose

c:when test="${j.index%4==0}"

trtd${显示数据}/td

/c:when

c:otherwise

c:choose

c:when test="${j.index%4==3}"

td${显示数据}/td/tr

/c:when

c:otherwise

td${显示数据}/td

/c:otherwise

/c:choose

/c:otherwise

/c:choose

/c:forEach

用到jstl

用java代码,实现m行n列矩阵的转换,即横向变为纵向,纵向变为横向(具体代码) 急~~~~~~~~

遍历时候控制方向就可以了,例如二维数组a[][]=[[a,b,c,d,e],[f,g,h,i,j],[k,l,m,n,o]]

for(int i=0;5;i++){

for(int j =0;j3;j++){

System.out.println(a[j][i]);

}

}

这个样子 就转过来了 要存的话,就顶一个数组 把结果存在里面就好了

求高手解决 java接收从oracle数据库检索出的结果集如何把行列变换

直接一条SQL 可以搞定的 为什么还要放到 java 里面?

select decode(date,'201301',date,null) as one,decode(date,'201302',date,null) as two,decode(date,'201303',date,null) as three from table

unin all

select decode(date,'201301',name,null) as one,decode(date,'201302',name,null) as two,decode(date,'201301',name,null) as three from table

unin all

select decode(date,'201301',dizhi,null) as one,decode(date,'201302',dizhi,null) as two,decode(date,'201303',dizhi,null) as three from table

如果就这几条数据建议用我这种 SQL搞定。

如果很多跳数据 。还是java里面搞比较好。

如果是在页面上显示 最好写了

就直接 循环td表格

listtddate/td/list

listtdname/td/list

listtddizhi/td/list

java 数组行列转换

你这个的程序,只能成功运行 n*n的情况,也就是行数和列数相等的二维数组才能成功。

如果 n*m 也就是行数和列数不相同的情况就可能出错。

因为 n*m 是没有对角线的,也就是 i = j不一定出现在对角线上,所以出现了你上面的问题。

sql 用select语句进行行转列

我们来看看一个小列子。有一个游戏玩家充值表(仅仅为了说明,举的一个小例子),

CREATE TABLE [Inpours]

(

   [ID]                INT IDENTITY(1,1), 

   [UserName]          NVARCHAR(20),  --游戏玩家

    [CreateTime]        DATETIME,      --充值时间    

    [PayType]           NVARCHAR(20),  --充值类型    

    [Money]             DECIMAL,       --充值金额

    [IsSuccess]         BIT,           --是否成功 1表示成功, 0表示失败

    CONSTRAINT [PK_Inpours_ID] PRIMARY KEY(ID)

)

 

INSERT INTO Inpours SELECT '张三', '2010-05-01', '支付宝', 50, 1

 

INSERT INTO Inpours SELECT '张三', '2010-06-14', '支付宝', 50, 1

 

INSERT INTO Inpours SELECT '张三', '2010-06-14', '手机短信', 100, 1

 

INSERT INTO Inpours SELECT '李四', '2010-06-14', '手机短信', 100, 1

 

INSERT INTO Inpours SELECT '李四', '2010-07-14', '支付宝', 100, 1

 

INSERT INTO Inpours SELECT '王五', '2010-07-14', '工商银行卡', 100, 1

 

INSERT INTO Inpours SELECT '赵六', '2010-07-14', '建设银行卡', 100, 1

下面来了一个统计数据的需求,要求按日期、支付方式来统计充值金额信息。这也是一个典型的行转列的例子。我们可以通过下面的脚本来达到目的

SELECT  

        CreateTime, [支付宝] , [手机短信], 

        [工商银行卡] , [建设银行卡] 

FROM 

    SELECT CONVERT(VARCHAR(10), CreateTime, 120) AS CreateTime,PayType, Money 

    FROM Inpours 

) P 

PIVOT ( 

            SUM(Money) 

            FOR PayType IN 

            ([支付宝], [手机短信], [工商银行卡], [建设银行卡]) 

      ) AS T 

ORDER BY CreateTime