- 1、java行列值的互換?
- 2、問一個java列轉行的實現邏輯
- 3、用java代碼,實現m行n列矩陣的轉換,即橫向變為縱向,縱向變為橫向(具體代碼) 急~~~~~~~~
- 4、求高手解決 java接收從oracle資料庫檢索出的結果集如何把行列變換
- 5、java 數組行列轉換
- 6、sql 用select語句進行行轉列
二維數組的行列值互換,又叫矩陣的轉置,數組a轉置後應該是1,4;2,5;3,6;
完整的矩陣轉置的Java程序如下
按照你的要求輸出1,2;4,5;3,6;的程序
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
遍歷時候控制方向就可以了,例如二維數組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]);
}
}
這個樣子 就轉過來了 要存的話,就頂一個數組 把結果存在裡面就好了
直接一條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
你這個的程序,只能成功運行 n*n的情況,也就是行數和列數相等的二維數組才能成功。
如果 n*m 也就是行數和列數不相同的情況就可能出錯。
因為 n*m 是沒有對角線的,也就是 i = j不一定出現在對角線上,所以出現了你上面的問題。
我們來看看一個小列子。有一個遊戲玩家充值表(僅僅為了說明,舉的一個小例子),
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
原創文章,作者:Z3X0C,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/126289.html