解决方案 »

  1.   

    参考oracle行转列(动态行转不定列)
      

  2.   

    asp实现的话可以只截取拼接sql语句的部分
    将拼接的sql语句直接拿去执行查询就是了
      

  3.   

    确实是用asp,你说的,拼接sql部分,是指存储过程的那块吗?
    有没有具体的代码例子,指导指导,我是新手,万分感谢!
      

  4.   

    找了个项目中的代码,你参考吧 VB.NET 环境的
     Private Function ReadData(ByVal TName As String, ByVal A As String, ByVal B As String, ByVal C As String, ByVal bvalue As String, ByVal SqlText As String, Optional ByVal value As String = "1", Optional ByVal DescFlag As Boolean = False) As DataTable
            Dim tb As DataTable = mydb.fill(New DataTable, SqlText)
            Dim STR As String = "SELECT " & bvalue
            Dim DR As DataRow
            For Each DR In tb.Rows
                STR &= ",SUM(DECODE(" & A & ",'" & DR(0) & "'," & value & ")) AS " & DR(1)
            Next
            STR &= ",SUM(" & value & ") AS 合计 from " & TName & " group by " & B & " order by " & C
            If DescFlag Then STR &= " desc"
            tb.Dispose()
            tb = mydb.fill(New DataTable, STR)
            Return tb
        End Function
      

  5.   

    大神,有没有asp.net的代码事例,VB我没学过,谢谢了
      

  6.   

    C#版的,重点参考下思路,mydb是我们这公用的一个类
    private DataTable ReadData(string TName, string A, string B, string C, string bvalue, string SqlText, string value = "1", bool DescFlag = false)
    {
    DataTable tb = mydb.fill(new DataTable(), SqlText);
    string STR = "SELECT " + bvalue;
    DataRow DR = null;
    foreach (DataRow DR_loopVariable in tb.Rows) {
    DR = DR_loopVariable;
    STR += ",SUM(DECODE(" + A + ",'" + DR[0] + "'," + value + ")) AS " + DR[1];
    }
    STR += ",SUM(" + value + ") AS 合计 from " + TName + " group by " + B + " order by " + C;
    if (DescFlag)
    STR += " desc";
    tb.Dispose();
    tb = mydb.fill(new DataTable(), STR);
    return tb;
    }