--如果要每周以工号统计呢?就是说周六后面有个字段:本周合计
select [qclog-zc].ghname as 工号,表职员资料全体.姓名,
         周日=sum(case dateint when 1 then nume else 0 end)
,周一=sum(case dateint when 2 then nume else 0 end)
,周二=sum(case dateint when 3 then nume else 0 end)
,周三=sum(case dateint when 4 then nume else 0 end)
,周四=sum(case dateint when 5 then nume else 0 end)
,周五=sum(case dateint when 6 then nume else 0 end)
,周六=sum(case dateint when 7 then nume else 0 end)
,本周合计=sum(nume)
from(
select intname,ghname,nume,dateint=datepart(weekday,dateint)
from [qclog-zc]
where dateint between '2004-07-10' and '2004-07-17'
)[qclog-zc],表职员资料全体 
where [qclog-zc].intname=表职员资料全体.电脑工号 
group by ghname,表职员资料全体.姓名

解决方案 »

  1.   

    --要在周的后面跟日期:周二/12
    --如果要每周以工号统计呢?就是说周六后面有个字段:本周合计--因为这种要求字段名是动态的,所以得用动态SQL--查询参数
    declare @dt1 datetime,@dt2 datetime
    select @dt1='2004-07-10'
    ,@dt2='2004-07-17'--查询处理
    declare @s varchar(8000),@dt datetime
    select @s='select [qclog-zc].ghname as 工号,表职员资料全体.姓名'
    ,@dt=@dt1
    while @dt<=@dt2
    select @s=@s+',[周'+substring('日一二三四五六',datepart(weekday,@dt),1)
    +'/'+datename(day,@dt)+']=sum(case dateint when '
    +cast(datepart(weekday,@dt) as varchar)+' then nume else 0 end)'
    ,@dt=@dt+1
    select @s=@s+',本周合计=sum(nume)
    from(
    select intname,ghname,nume,dateint=datepart(weekday,dateint)
    from [qclog-zc]
    where dateint between '''+convert(varchar,@dt1,120)
    +''' and '''+convert(varchar,@dt2,120)+'''
    )[qclog-zc],表职员资料全体 
    where [qclog-zc].intname=表职员资料全体.电脑工号 
    group by ghname,表职员资料全体.姓名'exec(@s)
      

  2.   

    是这样。还有一个表。
    select  intname,sum(nume) from tabnume 
    where dateint  between  @dt1 and @dt2 group by intname
    表里面的nume 与上面查询到的结果作一个统计,然后得出百分比。
    已有一个表保存(tabesum)查询到的数据.该如何去查询?
    谢谢!
      

  3.   

    是这样:
    上面查询结果的字段有:工号,姓名,'周日一二三四五六'--(星期共七个),周合计--共10个字段,放在一个新表tabesum,用这个表的数据与另外一个表的数据比较.另一个表是tabenewsum,它的数据是正常的数据,tabesum里保存的数据是上面查询得来的.
    要的结果是它与正常数据:正常数据取数查询
    select  intname,sum(nume) from tabenewsum
    where dateint  between  @dt1 and @dt2 group by intname
    比较得出的百分比.同样以工号来分组。
      

  4.   

    另一个表是tabenewsum,它的数据是正常的数据这个表是怎么结构法? 举例说明嘛.
      

  5.   

    tabenewsum(intname,nume,workname,dateint)--int工号,作业名,数量,日期(作业数量总表)
    [qclog-zc](intname,ghname,workname,nume,dateint)--int工号,工号,作业名,数量,日期(问题数量表)
    用tabenewsum的数据与[qclog-zc]的数据比较.得出百分比.以工号分组.
      

  6.   

    假设:tabenewsum有数据(01,200,作业1,2004-07-10;02,30,作业2,2004-07-11;03,100,作业1,2004-07-13)
    [qclog-zc]有数据(01,20,作业1,2004-07-10; 02,30,作业2,2004-07-11)
    查询时希望得到的结果(只得到周的7天数据,不能重复出现周x):
    工号   周六  周日   周一   周二   周三   周四   周五
    01      10%   0      0      0      0      0      0
    02      0     10%    0      0      0      0      0
    03      0      0     0      0      0      0      0