| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3256 人关注过本帖
标题:如何选取查询结果中条件相同结果的最大最小值
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
既然連一個完整的測試數據都不願給出,那你自己想辦法吧,我幫不了。

授人以渔,不授人以鱼。
2012-02-22 20:56
zzzzz513
Rank: 2
等 级:禁止发言
帖 子:14
专家分:19
注 册:2012-1-21
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2012-02-22 21:06
贝贝考
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-1-26
收藏
得分:0 
版主别误会,我没有不愿给出完整数据的意思,第二次贴出的数据库就是完整的数据,第一次我是因为想咨询怎么在查询的四个结果中选取最大和最小值,才手动写了那么个数据。并没有不愿意给出数据的意思,因为我是第一次接触vfp,我以前从未接触过编程,所以不到之处,请谅解,我自己本身什么都不懂。
2012-02-23 10:16
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
這樣吧,我在程序中,把缺進或出的記錄假定為準時,比如上面列出2號工某天晚上只打了上班卡,沒有打下班卡,就當他準時22:30下班來算,反之按準時19:00上班來算,如果多次打卡,則取最早那次。或者對這樣的記錄乾脆廢棄不處理。到底如何,你儘快決定,按前面的麻煩許多,後面的簡單許多。

但這樣處理肯定是有問題的,你們最好加強打卡管理,給出完善的處理辦法,否則算多算少了,事關勞資利益,都會造成矛盾。這個程序本身不難,但制定制度才是最重要的。

[ 本帖最后由 TonyDeng 于 2012-2-23 13:22 编辑 ]

授人以渔,不授人以鱼。
2012-02-23 13:15
软件服务
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:344
专家分:736
注 册:2011-12-23
收藏
得分:0 
回复 24楼 TonyDeng
佩服
2012-02-23 13:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是篩選出來的加班數據,其中有到23點的,怎麼算?

程序代码:
   Record#            USERID CHECKTIME                  
      6354                 2 2011.08.21 21:12:59        
     26318                 2 2011.10.10 19:34:33        
     37469                 2 2011.11.09 19:07:51        
     37801                 2 2011.11.10 19:02:44        
      5481                 5 2011.08.18 20:17:59        
     17505                 5 2011.09.20 19:48:36        
     43437                34 2011.11.27 19:05:18        
     43785                38 2011.11.28 20:32:11        
     32415                39 2011.10.26 21:16:11        
     19821                51 2011.09.27 20:38:57        
     29122                63 2011.10.17 20:07:53        
      8400                68 2011.08.26 19:04:17        
     27124                68 2011.10.11 19:05:50        
     32906                68 2011.10.27 19:43:17        
     43850                68 2011.11.25 19:01:35        
     46053                68 2011.12.01 20:00:55        
      6614                70 2011.08.22 19:19:00        
     28590                70 2011.10.14 20:05:38        
     22856                71 2011.10.03 19:02:22        
     11435                83 2011.09.01 21:29:25        
     22421                83 2011.10.02 23:07:23        
     22863                83 2011.10.03 21:03:56        
     27847                83 2011.10.13 20:58:06        
     33141                83 2011.10.30 21:01:34        
     40453                83 2011.11.17 19:25:37        
     43784                88 2011.11.28 19:43:38        
     11434                89 2011.09.01 21:29:11        
     18961                89 2011.09.23 21:27:24        
     19822                89 2011.09.27 20:42:46        
     22861                89 2011.10.03 20:35:53        
     22862                89 2011.10.03 21:03:45        
     28591                89 2011.10.14 21:30:26        
     32177                89 2011.10.25 21:04:12        
     32414                89 2011.10.26 20:37:40        
     33140                89 2011.10.30 21:01:29        
     41400                91 2011.11.21 20:13:15        
     28589                95 2011.10.14 19:11:49        
     39869                95 2011.11.16 19:47:45        
     22857                99 2011.10.03 19:02:38        
     26319                99 2011.10.10 19:46:58        
     29350                99 2011.10.18 19:33:31        
     36757                99 2011.11.07 19:04:05        
     47909                99 2011.12.08 19:15:27        
     48231                99 2011.12.07 19:08:42        
     44748               109 2011.11.29 19:01:01        
     33757               113 2011.10.28 19:11:15        
     33758               113 2011.10.28 20:46:16        
     18960               118 2011.09.23 19:30:23        
     32905               118 2011.10.27 19:01:29        
     43873               118 2011.11.26 19:04:36        
     46833               118 2011.12.05 19:38:00        
     41399               131 2011.11.21 19:14:14        
     46050               131 2011.12.01 19:19:05        
     48199               131 2011.12.09 19:09:29        
     47908               135 2011.12.08 19:00:53        
      5480               139 2011.08.18 19:37:15        
      5482               139 2011.08.18 21:36:56        
     17747               139 2011.09.21 20:24:00        
     18277               139 2011.09.22 23:06:15        
     22858               139 2011.10.03 19:04:57        
     30852               139 2011.10.21 19:00:48        
     45816               139 2011.12.03 20:28:06        
     46052               139 2011.12.01 19:23:14        
      6355               153 2011.08.21 22:01:19        
     22859               153 2011.10.03 19:25:51        
     13987               210 2011.09.09 20:36:37        
     15961               210 2011.09.15 20:16:49        
     21760               210 2011.09.30 19:19:00        
     22860               210 2011.10.03 20:32:14        
     30254               210 2011.10.20 19:27:21        
     46051               210 2011.12.01 19:19:45        
     46834               210 2011.12.05 20:47:49        
     18278               214 2011.09.22 23:06:27        
     35465               214 2011.11.03 20:39:10        

授人以渔,不授人以鱼。
2012-02-23 14:47
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:0 
select max(字段)... from 表 .. 条件..
select min(字段)... from 表 .. 条件..

2012-02-23 16:26
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
MD竟然還有在中間打卡的:
 51 2011.09.27 20:38:57
139 2011.09.21 20:24:00
210 2011.10.03 20:32:14
算他是什麼?

授人以渔,不授人以鱼。
2012-02-23 16:31
贝贝考
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-1-26
收藏
得分:0 
我们严格规定就是19:00-22:30,23点那个视为无效的,因为我没有vfp编程基础,所以只有笨法子,版主费心。
2012-02-23 17:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
我給你把所有數據算出來,你看看,自己取捨。

程序代码:
CLEAR ALL
CLOSE DATABASES ALL
CLEAR 

SET SAFETY OFF
SET EXACT ON
SET DATE ANSI                 && 使用yy/mm/dd格式
SET CENTURY ON                 && 世纪格式yyyy
SET STRICTDATE TO 1            && 严格日期格式
SET HOURS TO 24

cInTime = "19:00"
cOutTime = "22:30"

CreateTargetDBF()
USE TargetDB INDEX TargetDB EXCLUSIVE IN 0
SELECT TargetDB
cID = ""
SCAN ALL
    IF cID != TargetDB.id
        cID = TargetDB.id
        nCount = 0
    ELSE
        nCount = nCount + 1
    ENDIF
    IF nCount > 0
        SKIP -nCount
        tTime1 = TargetDB.checktime
        REPLACE TargetDB.time1 WITH "", TargetDB.time2 WITH "", TargetDB.time3 WITH ""
        SKIP nCount
        tTime2 = TargetDB.checktime
        REPLACE TargetDB.time1 WITH "", TargetDB.time2 WITH ""
        REPLACE TargetDB.time3 WITH GetTimeString(tTime2 - tTime1)
    ELSE
        tTime1 = DATETIME(YEAR(TargetDB.checktime), MONTH(TargetDB.checktime), DAY(TargetDB.checktime), VAL(LEFT(cInTime,2)), VAL(RIGHT(cInTime,2)))
        tTime2 = DATETIME(YEAR(TargetDB.checktime), MONTH(TargetDB.checktime), DAY(TargetDB.checktime), VAL(LEFT(cOutTime,2)), VAL(RIGHT(cOutTime,2)))
        REPLACE TargetDB.time1 WITH GetTimeString(TargetDB.checktime - tTime1)
        REPLACE TargetDB.time2 WITH GetTimeString(tTime2 - TargetDB.checktime)
    ENDIF
ENDSCAN
BROWSE
USE IN TargetDB

CLOSE DATABASES ALL
CLEAR ALL
RETURN 

PROCEDURE CreateTargetDBF()
    USE 111 ALIAS SourceDB EXCLUSIVE IN 0
    INDEX ON userid TO 111
    SELECT SourceDB
    COPY STRUCTURE TO TargetDB
    ALTER TABLE TargetDB ADD COLUMN id C(11)
    ALTER TABLE TargetDB ADD COLUMN time1 C(8)        && 打卡时间与标准上班时间之差
    ALTER TABLE TargetDB ADD COLUMN time2 C(8)        && 标准下班时间与打卡时间之差
    ALTER TABLE TargetDB ADD COLUMN time3 C(8)        && 有完整上下班打卡记录的时间
    SELECT TargetDB
    INDEX ON id TO TargetDB
    SELECT SourceDB
    GOTO TOP
    SCAN ALL
        IF SUBSTR(TTOC(SourceDB.checktime), 12, 5) >= cInTime
            SELECT TargetDB
            APPEND BLANK
            REPLACE TargetDB.userid WITH SourceDB.userid
            REPLACE TargetDB.checktime WITH SourceDB.checktime
            REPLACE TargetDB.id WITH PADL(SourceDB.userid, 3, '0') + CHRTRAN(LEFT(TTOC(SourceDB.checktime), 10), '.', '')
        ENDIF
        SELECT SourceDB
    ENDSCAN
    USE IN SourceDB
    USE IN TargetDB
ENDPROC 

FUNCTION GetTimeString(tnSeconds)
    LOCAL lcString
   
    lcString = ""
    DO WHILE tnSeconds > 0
        lcString = PADL(MOD(tnSeconds, 60), 2, '0') + lcString
        tnSeconds = INT(tnSeconds / 60)
        IF tnSeconds > 0
            lcString = ":" + lcString
        ENDIF
    ENDDO
   
    RETURN lcString
   
ENDFUNC

授人以渔,不授人以鱼。
2012-02-23 17:30
快速回复:如何选取查询结果中条件相同结果的最大最小值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040762 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved