none
【求助】离奇的报表数据重复问题 RRS feed

  • 问题

  • 最近老板让我解决一个报表的问题,我对SQL的语言不是很熟悉,看了好几天也没找出是什么错误,哪位高人能给指点下,问题为只有一位员工业绩总是重复显示,如图:
    代码如下:
    SELECT         FilteredOpportunity.name, FilteredOpportunity.customeridname, FilteredOpportunity.opportunityid, FilteredOpportunity.owneridname,
                          FilteredOpportunity.new_prvisiondemargetechnique, FilteredOpportunity.new_prvisiondemargematriel, FilteredOpportunity.actualclosedate,
                          FilteredOpportunity.estimatedclosedate, FilteredOpportunity.opportunityratingcodename, FilteredOpportunity.actualvalue,
                          FilteredOpportunity.estimatedvalue, FilteredOpportunity.statecodename, FilteredOpportunity.new_margetotal, FilteredOpportunity.ownerid,
                          FilteredOpportunity.statuscodename, FilteredOpportunity.statecode, FilteredTeam.name AS Equipe
    FROM         FilteredTeamMembership INNER JOIN
                          FilteredTeam ON FilteredTeamMembership.teamid = FilteredTeam.teamid INNER JOIN
                          FilteredOpportunity ON FilteredTeamMembership.systemuserid = FilteredOpportunity.ownerid
    WHERE     (FilteredOpportunity.actualclosedate >= @DateDebut) AND (FilteredOpportunity.actualclosedate <= @DateFin) AND (FilteredOpportunity.statecode = 1)
    ORDER BY FilteredOpportunity.actualclosedate
    2009年5月19日 8:28

答案

  • 有没有查果那个员工有没有在多过一个 Team 那里呢?


    Darren Liu | 刘嘉鸿 | MS CRM MVP | English Blog: http://msdynamicscrm-e.blogspot.com | Chinese Blog: http://liudarren.spaces.live.com
    • 已标记为答案 DEVSP 2009年5月20日 10:40
    2009年5月19日 13:01
    版主
  • CRM里面不会有重名的,按照域账户走的。
    看你报表需要了,其实,按照主字段来查选,你的着重点在team,还是user,要是team,重复了也没有关系,分组显示就好了。要是user,那就别用team来联合查询了
    • 已标记为答案 DEVSP 2009年5月20日 10:40
    2009年5月20日 2:14
  • 刘兄,看到你真亲切,我想我的重点是TEAM,但是现在又没法解决一个用户在多个组里面的问题,我只能用联合查询,因为是根据team的不同来显示员工的业绩,这个员工就比较特殊,所以会出现数据重复,怎样才能限制重复呢?

    你这是自相矛盾,那现在问你这个比较特殊的员工的业绩,到底算在哪个Team,

    你上面说的为什么用Distinct不能忽略,的确是由于这个你认为重复的记录,实际上他是不重复的,如在Select中把 FilteredTeam.name AS Equipe 去掉就会忽略这个重复的记录,但是又不能满足你的要求,
    • 已标记为答案 DEVSP 2009年5月20日 10:40
    2009年5月20日 9:04

全部回复

  • 代码没有问题

    2009年5月19日 9:14
  • 有没有查果那个员工有没有在多过一个 Team 那里呢?


    Darren Liu | 刘嘉鸿 | MS CRM MVP | English Blog: http://msdynamicscrm-e.blogspot.com | Chinese Blog: http://liudarren.spaces.live.com
    • 已标记为答案 DEVSP 2009年5月20日 10:40
    2009年5月19日 13:01
    版主
  • 有没有查果那个员工有没有在多过一个 Team 那里呢?


    Darren Liu | 刘嘉鸿 | MS CRM MVP | English Blog: http://msdynamicscrm-e.blogspot.com | Chinese Blog: http://liudarren.spaces.live.com
    可能性最大的就是Team这里的问题,要没么就是你的员工有重名(应该不太可能吧)!
    2009年5月19日 13:29
  • 这名员工确实在多个TEAM里面,采购组和销售组。如何加语句筛选呢?还是直接删除一个team,这个方案应该不是可执行的,请教!

    2009年5月19日 14:10
  • 这名员工确实在多个TEAM里面,采购组和销售组。如何加语句筛选呢? 还是直接删除一个team?

    2009年5月19日 14:10
  • 你需要想一想你的 SQL, 看看怎样才能拿到一个的systemuserid。一定有distinct 吧。:)

    Darren Liu | 刘嘉鸿 | MS CRM MVP | English Blog: http://msdynamicscrm-e.blogspot.com | Chinese Blog: http://liudarren.spaces.live.com
    2009年5月19日 15:05
    版主
  • CRM里面不会有重名的,按照域账户走的。
    看你报表需要了,其实,按照主字段来查选,你的着重点在team,还是user,要是team,重复了也没有关系,分组显示就好了。要是user,那就别用team来联合查询了
    • 已标记为答案 DEVSP 2009年5月20日 10:40
    2009年5月20日 2:14
  • Hi darrenliu,

    我测试用select distinct的方法去除相同数据的重复显示,事实表明没有起到作用,distinct是将重复的记录忽略,我就不明白为什么没有忽略,难道就是因为这个用户处在了2个组里面?有两个不同的teamid?还请指教!谢谢
    2009年5月20日 8:49
  • 刘兄,看到你真亲切,我想我的重点是TEAM,但是现在又没法解决一个用户在多个组里面的问题,我只能用联合查询,因为是根据team的不同来显示员工的业绩,这个员工就比较特殊,所以会出现数据重复,怎样才能限制重复呢?
    2009年5月20日 8:51
  • 刘兄,看到你真亲切,我想我的重点是TEAM,但是现在又没法解决一个用户在多个组里面的问题,我只能用联合查询,因为是根据team的不同来显示员工的业绩,这个员工就比较特殊,所以会出现数据重复,怎样才能限制重复呢?

    你这是自相矛盾,那现在问你这个比较特殊的员工的业绩,到底算在哪个Team,

    你上面说的为什么用Distinct不能忽略,的确是由于这个你认为重复的记录,实际上他是不重复的,如在Select中把 FilteredTeam.name AS Equipe 去掉就会忽略这个重复的记录,但是又不能满足你的要求,
    • 已标记为答案 DEVSP 2009年5月20日 10:40
    2009年5月20日 9:04
  • 我明白你的意思了,不能去掉FilteredTeam.name的原因是,我有个<field name="Equipe">在这段代码上面,这边也是去掉,那就不能选择equipe了。我去问问老板,跟他解释一下,看看能不能像个解决办法,代码本身是正确的,谢谢正义哥!
    2009年5月20日 10:39
  • 我去掉了FilteredTeam.name AS Equipe,但是现实结果和原来一摸一样,我想到一个解决办法,就是我从Equipe(team)这个组里面除去一个用户组,就是显示的时候不要显示这个组里面的员工业绩,这个语句该怎么写?
    2009年5月20日 12:21