例如:现在有以下数据.id   code  address  color  qty  price
1    苹果  北京     红     4    40
2    苹果  北京     青     3    15
3    苹果  北京     黄     10   100
4    苹果  上海     青     5    25
5    苹果  上海     黄     13   130
6    苹果  广东     黄     15   150
7    柑桔  北京     青     4    40
8    柑桔  北京     黄     3    15
9    柑桔  上海     青     10   100
11   柑桔  广东     青     13   130
12   柑桔  广东     黄     15   150
......要求显示TABLE以下:code  address     红          青          黄
               qty  price  qty  price  qty  price
苹果  北京     4    40     3    15     10   100
苹果  上海     0    0      5    25     13   130
苹果  广东     0    0      0    0      15   150
苹果小计:      4    40     8    40     38   380
(空一行)
code  address     青          黄
               qty  price  qty  price
柑桔  北京     4    40     3    15
柑桔  上海     10   100    0    0
柑桔  广东     13   130    15   150
柑桔小计:      27   270    18   165
......总计           31   310    26   205    38    380   

解决方案 »

  1.   

    有2个方法,我只说思路,不愿意看就算了。
    一、 按照品种地点排序数据,然后开始循环
      1 显示一个水果的品种和产地
      2 显示水果数据
      3 下一个
      4 判断,如果和上一个品种和产地相同,则在后面继续显示,转2
      5 显示空白(显示的数量根据你知道的颜色数量和前面已经显示的颜色数量而定,转1,开始新的一行二、用sql语句,将数据放到一行里面
      去搜索关键字 
    数据库 行转列
     的SQL语句就行了,不复杂的。
      

  2.   

    本人认为在SQL列出比HTML列出好做。
      

  3.   

    我用过SQL写,但显示水果数据里的东西不是固定的,是另一个数据表里的内容.看起来容易,但实现起来并不容易..
    请指点一下.还有.2楼的第一种方法,我现在在试,谢谢..
      

  4.   

    oracle数据库
    表名:aaa
    id  code  address  color  qty  price 
    1    苹果  北京    红    4    40 1、select distinct code from aaa;2、select code,address,sum(qty1),sum(qty2),sum(qty3) from(
    select code,address,qty as qty1,0 as qty2,0 as qty3 from aaa where color='红'
    union
    select code,address,0 as qty1,qty as qty2,0 as qty3 from aaa where color='青'
    union
    select code,address,0 as qty1,0 as qty2,qty as qty3 from aaa where color='黄'
    ) group by code,address
    3、1,2步骤各放入一个集合,第一个集合外层循环,第二集合为内层循环看看自己能不能处理了
      

  5.   

    似乎重点不应该在HTML上吧?应该是SQL上吧?SQL照着楼上的写就成了。
      

  6.   

    我并不认为页面上要显示成什么样子,我们写出来的 SQL 查询结果就得是这个样子的。希望能理解一下。
      

  7.   

    问一下,SQL怎么实现呢?我用JAVA还差个小计和总计没做好外都做好了..问一下,用JAVA的二维数组进行做统计,可以吗?请指点一下..
      

  8.   

    以下是我做的类,以及在页面上调用的情况,你自己参考一下吧.
    @RequestMapping("/xml/infolist.jhtml")
        public String infolist(HttpServletRequest req, HttpServletResponse resp,Xml xml,ModelMap modelMap){

    if(xml.getId()>0){
    XmlParameter xml1=new XmlParameter();
    xml1.setXmlId(xml.getId());
    List<XmlParameter> xmllist=xmlService.loadXmlParameter(xml1);  

    //List<Block> blocklist=xmlService.getBlock(xml.getId());
    PageInfoList<Block> blocklist=xmlService.queryForBock(xml);

    List<BlockXmlPvalue> blockxmlpvalue=xmlService.getBlockXmlPvalue(xml);

            ArrayList<HashMap> xmllistMap =this.getXmlListMap(xmllist);
            ArrayList<HashMap> blockxmlpvalueListMap =this.getBlockXmlPvalueListMap(blocklist,xmllist,blockxmlpvalue);         modelMap.addAttribute("xmllistMap",xmllistMap);
            modelMap.addAttribute("blockxmlpvalueListMap",blockxmlpvalueListMap);
            modelMap.addAttribute("blocklist",blocklist);
    }        
            return "xmlview.infolist";
        }

    /**
     * 将list转换成map(即将纵表的数据拼接成横表展示)
     * 
     * @param xmllist 数据集合
     * @return list 返回组合好的数据集合
     */
    private ArrayList<HashMap> getXmlListMap(
    List<XmlParameter> xmlList) {
    ArrayList<HashMap> reXmlList = new ArrayList<HashMap>();
    HashMap hashMap = null; // 将结果封装到map里
    for (XmlParameter xmlParameter : xmlList) {
    hashMap = new HashMap();
    hashMap.put("xmlId", xmlParameter.getXmlId());
    hashMap.put("displayname", xmlParameter.getDisplayName());
    hashMap.put("type", xmlParameter.getType());
    hashMap.put("rank", xmlParameter.getRank());

    reXmlList.add(hashMap);
    }

    return reXmlList;
    }

    /**
     * 将list转换成map(即将纵表的数据拼接成横表展示)
     * 
     * @param xmllist 数据集合
     * @return list 返回组合好的数据集合
     */
    private ArrayList<HashMap> getBlockXmlPvalueListMap(
    List<Block> blocklist,
    List<XmlParameter> xmlList,
    List<BlockXmlPvalue> blockxmlpvalue) {
    ArrayList<HashMap> reblockxmlpvalueList = new ArrayList<HashMap>();
    HashMap hashMap = null;
    int ListSize = blockxmlpvalue.size();
    // 将结果封装到map里
    for (Block block : blocklist) {
    hashMap = new HashMap();
    hashMap.put("xmlId", block.getXmlId());
    hashMap.put("code",  block.getCode());
    hashMap.put("name",  block.getName());
    String parameterValues="";
    for (int i = 0; i < ListSize;i++) {
    BlockXmlPvalue fblockxmlpvalue = blockxmlpvalue.get(i);
    if (block.getCode().equals(fblockxmlpvalue.getBlockCode())) {     hashMap.put(fblockxmlpvalue.getRank(), fblockxmlpvalue.getValue());
        
        if (i == 0) {
    parameterValues = blockxmlpvalue.get(i).getValue() + ",";
    } else {
    parameterValues += blockxmlpvalue.get(i).getValue()+",";
    }
        
        blockxmlpvalue.remove(blockxmlpvalue);
    }
    }

    XmlData xmldata1=new XmlData();
    xmldata1.setXmlId(block.getXmlId());
    xmldata1.setParameterValues(parameterValues);
    List<XmlData> xmldata=xmlService.loadXmlData(xmldata1);
    if(xmldata.size()>0){
    hashMap.put("updatedtime",  xmldata.get(0).getUpdatedTime());
    } reblockxmlpvalueList.add(hashMap);
    }
    return reblockxmlpvalueList;
    }
      

  9.   

    此处为jsp页面显示:
    <table width="100%" cellspacing="0" class="sytable" cellpadding="0" id="bbstr">
    <tr>
      <th>对应引用版块</th>
      <th>引用版块名称</th>
      
       <c:forEach  items="${xmllistMap}" var="xml" varStatus="s">
        <th>${xml.displayname}</th>     
       </c:forEach>
        <th>最后抓取时间</th>
        </tr> 
     <c:forEach  items="${blockxmlpvalueListMap}" var="blockxmlpvalue" varStatus="s">  
      <tr>
        <td>${blockxmlpvalue.code}</td>
        <td>${blockxmlpvalue.name}</td>  
         <c:forEach  items="${xmllistMap}" var="xml" varStatus="s">
         <td>${blockxmlpvalue[xml.rank]}</td>     
       </c:forEach>
       <td><fmt:formatDate  value="${blockxmlpvalue.updatedtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
      </tr>

    </c:forEach>  </table>
      

  10.   


    SQL sum(字段)函数不可以做统计吗?
      

  11.   

    我是说在JAVA里实现统计,并不是说在SQL里做,我没有用SQL的方式去做.你有SQL的做法的话提供给我学习学习一下啊.谢谢..