代码:
TRANSFORM IIf(IIf(IsNull([宏达].[所属日期]),0,[宏达].[所属日期])>Min([宏达_1].[所属日期]),0,1) AS 值
SELECT 宏达.姓名
FROM 宏达 LEFT JOIN 宏达 AS 宏达_1 ON 宏达.姓名 = 宏达_1.姓名
WHERE (((宏达.所属日期) Like "2003*"))
GROUP BY 宏达.姓名, 宏达_1.姓名
PIVOT 宏达.所属日期;
如图
[attach]2452[/attach]
解决方法二:
按照你的数据库设计要求,把相关记录查找出,填写入表中
嘻嘻,兔兔再想想,我这儿也是好慢好慢 作者: 没牙兔兔 时间: 2003-11-13 23:26
写了一下
按照你的这个表结构,如果该同志从来都不交,肯定是漏网之鱼的
以下速度还是慢
建议按照年度 或者部门进行分别汇总
Rs.Open "select * from 宏达 where 所属日期 like "2003%" order by 养老编号,所属日期 ", Conn, adOpenDynamic, adLockOptimistic
速度好狠多
代码:
Dim Conn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim RsErr As ADODB.Recordset
'存储变量
Dim SDATE As String, SNO As String
Set Conn = CurrentProject.Connection
Set Rs = New ADODB.Recordset
Set RsErr = New ADODB.Recordset
Rs.Open "select * from 宏达 order by 养老编号,所属日期 ", Conn, adOpenDynamic, adLockOptimistic
RsErr.Open "select * from 出错", Conn, adOpenDynamic, adLockOptimistic
If Not Rs.EOF Then
While Not Rs.EOF
If SNO = "" Then
SNO = Rs!养老编号
SDATE = Rs!所属日期
Else
If Rs!养老编号 = SNO Then
If Rs!所属日期 = SDATE + 1 Then
SDATE = Rs!所属日期
Else
RsErr.AddNew
RsErr!养老编号 = SNO
RsErr!所属日期1 = SDATE
RsErr!所属日期2 = Rs!所属日期
'这儿如果定义为前一月,则rserr!所属日期2=rs!所属日期-1'
'但需要判断是不是1号,否则会出错这儿加1好像有日期函数,兔兔忘了
RsErr.Update
End If
Else
'换人啦
'判断前面的是否全交到现在的月份
If SDATE = Year(Date) & Month(Date) Then
'这位老大全交啦,放人,放人
Else
'不要逃
RsErr.AddNew
RsErr!养老编号 = SNO
RsErr!所属日期1 = SDATE
'同样这儿也需要如果要多加一个月
'RsErr!所属日期1 = SDATE+1,判断是不是月底哦,这儿加1好像有日期函数,兔兔忘了
RsErr!所属日期2 = Year(Date) & Month(Date)
RsErr.Update
End If
'好了,开始下一位
SNO = Rs!养老编号
SDATE = Rs!所属日期
End If
End If
Rs.MoveNext
'最后一名也不能放过
'判断前面的是否全交到现在的月份
If Rs.EOF Then
If SDATE = Year(Date) & Month(Date) Then
'这位老大全交啦,放人,放人
Else
'不要逃
RsErr.AddNew
RsErr!养老编号 = SNO
RsErr!所属日期1 = SDATE
RsErr!所属日期2 = Year(Date) & Month(Date)
RsErr.Update
End If
End If
Wend
End If
MsgBox "累死俺啦,终于自动汇总完啦~!!"