现在的位置: 首页 > 综合 > 正文

查询多月份中某一字段的最小值,最大值,平均值,其中每个月为一张表。

2012年07月20日 ⁄ 综合 ⁄ 共 1478字 ⁄ 字号 评论关闭
循环生成表名代码
 1 if (startYM == endYM)
 2         {
 3             tableName1 = "ANALOG_DATA_" + startYM;   //表名
 4             sql = "select min(pval),max(pval),round(avg(pval),5) from "+tableName1+" where pval>0 and pid='" + pid + "'and dtag>=" + dtagStart + " and dtag<=" + dtagEnd + "";
 5         }
 6 else
 7        {
 8                 monthCount = 12 * (endYear - startYear) + (endMonth - startMonth) + 1;           
 9                 for (int monthNum = 0; monthNum < monthCount; monthNum++)
10                 {
11                     tableName1 = "ANALOG_DATA_" + startDate.AddMonths(monthNum).ToString("yyyyMMdd").Substring(06);             
12                     if (monthNum >= 0 && monthNum<monthCount-1)    
13                     {
14                         sbSql.Append("select min(pval) as pvalMin,max(pval) as pvalMax,round(avg(pval),5) as pvalAvg from "+tableName1+" where pval>0 and pid='" + pid + "'and dtag>=" + dtagStart + " and dtag<=" + dtagEnd + " union ");
15                     }
16                     else                   //最后一个月数据
17                     {
18                         sbSql.Append("select min(pval) as pvalMin,max(pval) as pvalMax,round(avg(pval),5) as pvalAvg from " + tableName1 + " where pval>0 and pid='" + pid + "'and dtag>=" + dtagStart + " and dtag<=" + dtagEnd + "");  
19                     }
20                 }
21                 sql = "select min(pvalMin),max(pvalMax),round(avg(pvalAvg)) from (" + sbSql.ToString() + ")";
22         }

抱歉!评论已关闭.