本帖最后由 shpchan 于 2009-08-11 10:44:45 编辑

解决方案 »

  1.   

    请问LZ你的表需要用什么显示,DGV?
      

  2.   

    在web页面上用 table 显示
      

  3.   

    肯定是个SQL的问题,我帮你想.等啊.
      

  4.   

    不是转换函数问题,是数据库的SQL操作问题
      

  5.   

    繁琐点,用sql语句查出来,放在table里
      

  6.   

    答案出炉了:仅供参考
    表结构:
    CREATE TABLE [Table1] (
    [gongHao] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [thetime] [datetime] NOT NULL ,
    [bF] [bit] NOT NULL CONSTRAINT [DF_Table1_bF] DEFAULT (1)
    ) ON [PRIMARY]
    GO
    表数据:
    gongHao    thetime        bF   
    -----------------------------------------------
    110        2009-08-08 09:03:00.000          1
    110        2009-08-08 17:15:00.000          0
    111        2009-08-08 09:00:00.000          1
    111        2009-08-08 16:00:00.000          0
    查询结构:
    SELECT DISTINCT 
          dbo.Table1.gongHao, dbo.Table1.thetime AS 上班, Table1_1.thetime AS 下班
    FROM dbo.Table1 INNER JOIN
          dbo.Table1 Table1_1 ON dbo.Table1.gongHao = Table1_1.gongHao CROSS JOIN
          dbo.Table1 Table1_2
    WHERE (dbo.Table1.bF = 1) AND (Table1_1.bF = 0)查询结果:
    gonghao    上班                                   下班
    110        2009-08-08 09:03:00.000           2009-08-08 17:15:00.000
    111         2009-08-08 09:00:00.000          2009-08-08 16:00:00.000
    思路:
    先转换为上述的表
    然后再查询就可以了.
      

  7.   


    楼主的帖子包含三种情况:
    1.正常打卡的,当天只有两次打卡记录
    2.异常打卡的,当天只有一次打卡记录
    3.正常打卡的,当天四次打卡记录的
    实际上可能还有:
    4.异常打卡的,当天有三次打卡记录
    5.异常打卡的,当天有很多打卡记录,但是进厂出厂记录是匹配的,总记录数为偶数
    6.异常打卡的,当天有很多打卡记录,但是进厂出厂记录不匹配,总记录数为奇数
    7.异常打卡的,多次进厂记录但无出厂记录
    8.异常打卡的,多次出厂记录但无进厂记录暂时想到的就这么多
    我觉得楼主还是一个一个去计算比较好,用SQL解决不了这么复杂的问题
    思路:
    先取某一个人的所有打卡记录:
    select * from 原表 where 工号='090119'
    然后在C#里根据你的计算规则进行考勤计算至于要转换成楼主帖子里说的格式,非常困难,应该是几乎不可能的任务,参看第5,6,7,8条
    碰到某人一天刷卡1000次呢?
      

  8.   

    完全可以用SQL查询出来。
    首先你得设计不合理。按照你这样列是无限增加的(起码理论是这样)
    应该每次进出是一条记录,或则只查询最进的一次记录,然后点击详细列出一天的记录或则折叠起来
    还有就是上面老兄说的异常如何?