请教一个转换函数(求高手帮忙) 本帖最后由 shpchan 于 2009-08-11 10:44:45 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请问LZ你的表需要用什么显示,DGV? 在web页面上用 table 显示 肯定是个SQL的问题,我帮你想.等啊. 不是转换函数问题,是数据库的SQL操作问题 繁琐点,用sql语句查出来,放在table里 答案出炉了:仅供参考表结构: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 1110 2009-08-08 17:15:00.000 0111 2009-08-08 09:00:00.000 1111 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_2WHERE (dbo.Table1.bF = 1) AND (Table1_1.bF = 0)查询结果:gonghao 上班 下班110 2009-08-08 09:03:00.000 2009-08-08 17:15:00.000111 2009-08-08 09:00:00.000 2009-08-08 16:00:00.000思路:先转换为上述的表然后再查询就可以了. 楼主的帖子包含三种情况:1.正常打卡的,当天只有两次打卡记录2.异常打卡的,当天只有一次打卡记录3.正常打卡的,当天四次打卡记录的实际上可能还有:4.异常打卡的,当天有三次打卡记录5.异常打卡的,当天有很多打卡记录,但是进厂出厂记录是匹配的,总记录数为偶数6.异常打卡的,当天有很多打卡记录,但是进厂出厂记录不匹配,总记录数为奇数7.异常打卡的,多次进厂记录但无出厂记录8.异常打卡的,多次出厂记录但无进厂记录暂时想到的就这么多我觉得楼主还是一个一个去计算比较好,用SQL解决不了这么复杂的问题思路:先取某一个人的所有打卡记录:select * from 原表 where 工号='090119'然后在C#里根据你的计算规则进行考勤计算至于要转换成楼主帖子里说的格式,非常困难,应该是几乎不可能的任务,参看第5,6,7,8条碰到某人一天刷卡1000次呢? 完全可以用SQL查询出来。首先你得设计不合理。按照你这样列是无限增加的(起码理论是这样)应该每次进出是一条记录,或则只查询最进的一次记录,然后点击详细列出一天的记录或则折叠起来还有就是上面老兄说的异常如何? winform可以 wcf不可以? 關于一個數據庫鏈接的問題 请教 predicate<T> 的用法 关于选项卡的放置问题? 有关MSDN帮助文档的问题? 利用DirectX写的录音机软件怎么才能再次录音? 关于Compare 的用法 dataSet占用的内存也太大了!随便一点数据就好几兆! 接:散分!!给个理由,真的需要重画吗??C#图形编程问题 [WebMethod]在vs.net中这个是什么用的! 请问datagridview怎么指定行 C# 写了一个对话框程序 读取sql2005 中文乱码?
表结构:
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
思路:
先转换为上述的表
然后再查询就可以了.
楼主的帖子包含三种情况:
1.正常打卡的,当天只有两次打卡记录
2.异常打卡的,当天只有一次打卡记录
3.正常打卡的,当天四次打卡记录的
实际上可能还有:
4.异常打卡的,当天有三次打卡记录
5.异常打卡的,当天有很多打卡记录,但是进厂出厂记录是匹配的,总记录数为偶数
6.异常打卡的,当天有很多打卡记录,但是进厂出厂记录不匹配,总记录数为奇数
7.异常打卡的,多次进厂记录但无出厂记录
8.异常打卡的,多次出厂记录但无进厂记录暂时想到的就这么多
我觉得楼主还是一个一个去计算比较好,用SQL解决不了这么复杂的问题
思路:
先取某一个人的所有打卡记录:
select * from 原表 where 工号='090119'
然后在C#里根据你的计算规则进行考勤计算至于要转换成楼主帖子里说的格式,非常困难,应该是几乎不可能的任务,参看第5,6,7,8条
碰到某人一天刷卡1000次呢?
首先你得设计不合理。按照你这样列是无限增加的(起码理论是这样)
应该每次进出是一条记录,或则只查询最进的一次记录,然后点击详细列出一天的记录或则折叠起来
还有就是上面老兄说的异常如何?