姓名  正常工作  正常下班 加班  出去办事 中间下班 没来上班
小王     1          2    3      4         5       7
小梦     12         1    12     12        12      12 
。。      。。     。。    。。   。。      。。  。。


这样的,我用单语句写,怎么来弄
正常工作:是TTIME和FACTION都有值。
正常下班:编号无N这个字母,和PRESENT有值
加班:20分钟内PLACE和NNUMBER相同
出去办事:编号无N这个字母和PRESENT为空
中间下班:CONDITION为中间下班。
没来上班:CONDITION为没来上班
 private void button1_Click(object sender, EventArgs e)
        {
            DataSet ds = new DataSet();//实例化一个数据集             DataTable dt = new DataTable("Grade");//建立个数据表(Grade) 
            dt.Columns.Add(new DataColumn("姓名", typeof(string )));//在表Grade中添加int类型的列 
            dt.Columns.Add(new DataColumn("正常工作", typeof(string)));//在表Grade中添加string类型的Name列 
            dt.Columns.Add(new DataColumn("正常下班", typeof(string)));//在表Grade中添加int类型的列 
            dt.Columns.Add(new DataColumn("加班", typeof(string)));//在表Grade中添加string类型的Name列 
            dt.Columns.Add(new DataColumn("出去办事", typeof(string)));//在表Grade中添加int类型的列 
            dt.Columns.Add(new DataColumn("中间下班", typeof(string)));//在表Grade中添加string类型的Name列 
            dt.Columns.Add(new DataColumn("没来上班", typeof(string)));//在表Grade中添加int类型的列 
                       DataRow dr;//行 
            for (int i = 0; i < 10; i++)
            {
                dr = dt.NewRow();
                dr["姓名"] = i;
                dr["正常工作"] = "Name" + i;
                dr["正常下班"] = i;
                dr["加班"] = "Name" + i;
                dr["出去办事"] = i;
                dr["中间下班"] = "Name" + i;
                dr["没来上班"] = i;
                               dt.Rows.Add(dr);//在表的对象的行里添加此行 
               // ds.Tables.Add(dt);//在数据集的表的集合中添加表bt(建立的表的对象) 
                this.dataGridView1.DataSource = dt;
            }
这想这样一个一个的给他,可是姓名和对应的我想不到好的办法给对应,你有什么简单或者好的办法呢

解决方案 »

  1.   

    数据结构:
    name varchar(20);
    ttime date;
    faction varchar(200);
    id VARCHAR2(200) ;
    present varchar(200);
    place varchar(200);
    nnumber varchar(200);
    condition varchar(200);
      

  2.   

    select a.name,
    (select count(1) from acc_shoulibiao where name=a.name and ttime is not null and action is not null) 正常上班,
    (select count(1) from acc_shoulibiao where name=a.name and instr(id,'N')=0 and present is not null) 正常下班,
    (select count(1) from acc_shoulibiao b,acc_shoulibiao c where b.name=a.name and b.name=c.name and b.place=c.place and b.nnumber=c.nnumber and (c.ttime-b.ttime)*24*60<=20 and (c.ttime-b.ttime)*24*60>0 and c.id<>b.id) 加班,
    (select count(1) from acc_shoulibiao where name=a.name and instr(id,'N')=0 and present is null) 出去办事,
    (select count(1) from acc_shoulibiao where name=a.name and condition='中间下班') 中间下班,
    (select count(1) from acc_shoulibiao where name=a.name and condition='没来上班') 没来上班
    from acc_shoulibiao a
    group by a.name;