Java 如何读取第一行列中的第二行列值

Java 如何读取第一行列中的第二行列值,java,mysql,displaytag,Java,Mysql,Displaytag,我使用显示标签来显示表格,它工作正常,但我有一个新的要求,我需要在第一行列中显示第二行列值,在第二行列中显示第三行值…即 对于我来说,以下表格格式的数据如下: Sr No. From Date To Date Duration(hh:mm:ss) 1 01-Nov-2013 12:17:00 PM 2d 20:23:22 2 0

我使用显示标签来显示表格,它工作正常,但我有一个新的要求,我需要在第一行列中显示第二行列值,在第二行列中显示第三行值…即 对于我来说,以下表格格式的数据如下:

 Sr No.      From Date                   To Date        Duration(hh:mm:ss)  
    1    01-Nov-2013 12:17:00 PM                                2d 20:23:22       
    2    04-Nov-2013 09:40:35 AM                        01:20:37       
    3            04-Nov-2013 11:27:21 AM                    05:23:35 
但我需要的表格数据如下所示:

Sr No.      From Date                    To Date        Duration(hh:mm:ss)  
    1   01-Nov-2013 12:17:00 PM   04-Nov-2013 09:40:35 AM           2d 20:23:22       
    2  04-Nov-2013 09:40:35 AM  04-Nov-2013 11:27:21 AM          01:20:37      
    3  04-Nov-2013 11:27:21 AM         4th row 2nd column         05:23:35 
你能帮我怎么做吗 下面将详细介绍我编写的java代码 StoppageDBReport.jsp:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel="stylesheet" href="css/displaytag.css" type="text/css">  
<link rel="stylesheet" href="css/screen.css" type="text/css">  
<link rel="stylesheet" href="css/site.css" type="text/css">  
<link href="css/sty.css" rel="stylesheet" type="text/css" />
<link href="css/tabborder.css" rel="stylesheet" type="text/css" />
</head>
<body>


<jsp:include page="Header.jsp" />
    <c:choose>
    <c:when test="${not empty spdetails}">       
            <table id="display_table">
            <tr ><td><b>Stoppage Details</b></td></tr>
            <tr ><td><b><%=request.getParameter("vehicleId") %></b></td></tr>
            <tr><td>From &nbsp;<%=session.getAttribute("fromdate") %>&nbsp;to&nbsp;<%=session.getAttribute("startdate") %></td></tr>

            </table>
            <display:table id="deviceDetailsID" name="sessionScope.spdetailsid" pagesize="10" export="true" sort="list">

   <display:setProperty name="basic.empty.showtable" value="true" />
    <display:setProperty name="paging.banner.group_size" value="10" />
    <display:setProperty name="paging.banner.item_name" value="Record" />
    <display:setProperty name="paging.banner.item_names" value="Records" />

   <display:column property="serialID" title="Sl No" style="width: 3%"/>
    <display:column property="deviceID" title="Device ID"  style="width: 1%"/>
    <display:column property="timestamp" title="From Date"  format="{0,date,dd-MM-yyyy}"/>
    <display:column property="timestamp" title="ToDate" />
    <display:column property="statuscode" title="Status Code"/>
    <display:column property="address" title="Address" />
</display:table> 
</c:when>

<c:otherwise>
<jsp:include page="Pages/Stoppagebody.jsp"/>
<div id="MenuLineDiv" style="width:100%; height: 2px; font-size: 2px; background-color: #FFCD44; position: relative; top: 0px;"></div>
<table width="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF">
    <tr class="topheader">
        <td colspan="6" style="color:white;text-align:center;">Stoppage report for <%=request.getParameter("vehicleId") %> from <%=session.getAttribute("fromdate") %> to <%=session.getAttribute("startdate") %> </td>
    </tr>


    <tr class="secondhedr">
        <td colspan="6" style="color:white;text-align:center;">No data found</td>
    </tr>

</table>
  </c:otherwise>
</c:choose>              
    <jsp:include page="Footer.jsp"/>    


</body>
</html>

在mysql中,通过自连接可以做到这一点,但最简单的解决方案是从java中列表的下一个元素中读取该值

这是你的控制器发来的

List<StoppageDetails> spdetails=rdao.getSpDetails(accountID, deviceID, Timestamp1, Timestamp2);
for (int i = 0; i < spdetails.size() - 1; i++) {
    StoppageDetails current = spdetails.get(i);
    StoppageDetails next = spdetails.get(i+1);
    current.setTimestamp2(next.getTimestamp());
}

您可以使用这样的查询-

SELECT t1.sr_no, t1.From_Date, t2.From_Date AS To_Date, Duration FROM table1 t1
  LEFT JOIN (SELECT * FROM table1 ORDER BY sr_no) t2
    ON t1.sr_no < t2.sr_no
GROUP BY
  t1.sr_no

在本例中,行是按Sr No.字段排序的。

感谢您的响应,Andreas您能解释一下如何在mysql中进行排序吗?因为我还需要时间戳之间的差异
package com.preva.vo;

public class StoppageDetails {

    private String accountID, deviceID,timestamp,address;
    private int serialID;
    public String getTimestamp() {
        return timestamp;
    }

    public void setTimestamp(String timestamp) {
        this.timestamp = timestamp;
    }

    public int getSerialID() {
        return serialID;
    }

    public void setSerialID(int serialID) {
        this.serialID = serialID;
    }

    public String getAccountID() {
        return accountID;
    }

    public void setAccountID(String accountID) {
        this.accountID = accountID;
    }

    public String getDeviceID() {
        return deviceID;
    }

    public void setDeviceID(String deviceID) {
        this.deviceID = deviceID;
    }
    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }



}
List<StoppageDetails> spdetails=rdao.getSpDetails(accountID, deviceID, Timestamp1, Timestamp2);
for (int i = 0; i < spdetails.size() - 1; i++) {
    StoppageDetails current = spdetails.get(i);
    StoppageDetails next = spdetails.get(i+1);
    current.setTimestamp2(next.getTimestamp());
}
SELECT t1.sr_no, t1.From_Date, t2.From_Date AS To_Date, Duration FROM table1 t1
  LEFT JOIN (SELECT * FROM table1 ORDER BY sr_no) t2
    ON t1.sr_no < t2.sr_no
GROUP BY
  t1.sr_no