搜一搜:SQL行转列另,你表1根本没有任何存在的意义
除非表2里不要直接存产品名,而是存编号

解决方案 »

  1.   

    select日期,max(case产品when'HPA'then数量else0end)HPA,max(case产品when'AC'then数量else0end)AC,max(case产品when'HPT'then数量else0end)HPT,max(case产品when'HCD'then数量else0end)HCD,sum(数量)合计from 表2groupby日期
    这里的HPT,HCD等等都是个例子,具体你得去遍历表1去循环,转换完之后在根据时间去查询
    你试试吧,一起坐等大神
      

  2.   

    Sql上问题不大,难的是在前台页面显示读取时表头,名怎么动态呢根据数据查那个左右排序,那个在前那个排在后,都是动态的!第一列日期,没有问题,到了第二列,事先不知道第二列是那个产品,第三列,就不知怎么绑定了
    怎么用repeater ,或gridview...这些控件来给它显出出来?
      

  3.   

    表1   
    编号  产品名
    1        HPT
    2        HPA
    3        HCD
    4        AC
    。表二 
    日期        数量   产品
    2015-1-2          10      HPA
    2015-1-2          6        HPT
    2015 -1-3         7         HCD
    2015-1-3          3         HPT
    2015-1-3          20         AC
    2015- 1-3         5         HPA
    2015-1-4          10      HPA
    。显示效果
    查询条件查一天 日期从[2014-1-2]到[2014-1-2]  得下表并显示  
    日期          HPA   HPT    HCD    AC  合计
    2014-1-2   10      6         0         0      16
    合计           10     6         0         0     16查询条件查几天 日期从[2014-1-2]到[2014-1-4]  
    日期        HPA      AC      HPT       HCD   合计
    2014-1-2     10      0         6        0              16
    2014-1-3      5      20        3        7          45
    2014-1-4      10       0       0         0           10
    合计           25     20        9         7          61
    重点在于
    用repearter  gridview ...用什么能实现显示成这个表 表头动态!
      

  4.   

    第一个方法:
    有个傻瓜的方法(不推荐,但容易实现)在aspx文件上写
    <%if(是一天的){%>
     日期      HPA   HPT    HCD    AC  合计     //用repearter去弄还是怎么弄你自己定了。
    <%}else{%>
    日期      HPA   AC    HPT    HCD  合计      //用repearter去弄还是怎么弄你自己定了。
    <%}%>
    上面两个的repeater的ID都一样就好了,这样后台的repeater绑定都一样了
    第二个方法:
    后台直接判断是否一天,然后再输出整个table在前台
    例如
    .cs中 public string ShowTb()
    {
        if(是一天的)
    {
     return "<table><tr><th> 日期</th><th>HPA</th></tr></table>"    // 剩下的自己拼吧;
    }
    else
    {
    return "<table><tr><th>HPA</th><th> 日期</th></tr></table>"    // 剩下的自己拼吧;
    }
    }
    然后前台调用这个方法。
    不过给我的话会用js去处理咯上面的方法挺傻瓜了,希望能帮到你