发新话题
打印

[已解决] 查询解决期限在60内的defect( 此文章被查看:498次,被回复:8篇!! )

本主题由 yunshan 于 2008-5-13 21:01 关闭 本主题被作者加入到个人文集中

查询解决期限在60内的defect

各位大侠,我要写一个解决期限在60天内,即:解决时间-提交时间<=60天这样一个查询,执行下面的sql语句查询到的Max(action_timestamp)是history表中的最大时间,不是某个记录的Max(action_timestamp),请问,怎样取到一个记录的最大Max(action_timestamp)?

select T1.dbid,
       T1.id,
       T1.headline,
       T1.severity,
       T1.questiontype,
       T3.name,
       T7.login_name,
       T26.name,
       T1.description,
       T1.analysis,
       T1.submit_date,
       T25.name,
       T25.company,
       T1.district
  from ((((((CR.Defect T1 INNER JOIN CR.statedef T3 ON T1.state = T3.id)
        INNER JOIN CR.users T7 ON T1.owner = T7.dbid) INNER JOIN
        CR.project T26 ON T1.project = T26.dbid) INNER JOIN CR.history T4 ON
        T1.dbid = T4.entity_dbid and 16777244 = T4.entitydef_id) LEFT OUTER JOIN
        CR.parent_child_links T25mm ON
        T1.dbid = T25mm.parent_dbid and 16780602 = T25mm.parent_fielddef_id) LEFT
        OUTER JOIN CR.customer T25 ON T25mm.child_dbid = T25.dbid)
where T1.dbid <> 0 and T1.owner = T7.dbid and T3.name = '已完成' and
       T1.dbid = T4.entity_dbid and T4.new_state = '已完成' and   
DateDiff(dd,(select Max(action_timestamp)
           from CR.history T4
          where T4.new_state = '已完成'),(select Min(action_timestamp)
           from CR.history T4
          where T4.action_name = '提交'))<60

[ 本帖最后由 香蕉231 于 2008-5-10 14:27 编辑 ]


问题已经解决 [打开主题]
本主题的最佳答案为 [ 5 楼].



© 本文为 香蕉231SCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

你加2个字段:SubmitDate,ResolveDate,在提交任务和解决任务的时候分别将Date赋给这2个字段,然后查询这2个字段值的差小于60天的记录

[ 本帖最后由 asukataozi 于 2008-5-12 10:39 编辑 ]



© 本文为 asukataoziSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

回复 楼主 的帖子

加字段方法实现成本太高了,查询应该就可以了
你的max语句查询的是history表里全部的记录,肯定是history表里最大的,应该表连接defect表



© 本文为 scmtataSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员
勇敢的心

TOP

引用:
原帖由 scmtata 于 2008-5-12 10:48 发表
加字段方法实现成本太高了,查询应该就可以了
你的max语句查询的是history表里全部的记录,肯定是history表里最大的,应该表连接defect表
呵呵,LZ似乎没有连接到Defect表,检查下是不是这块错了: T1.dbid = T4.entity_dbid and 16777244 = T4.entitydef_id

© 本文为 asukataozi 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

谢谢,两位楼兄的解答。这个查询我终于搞定了!
select dbid,cqid,headline,当前状态,提交时间,解决时间,datediff(dd,abc.提交时间,abc.解决时间) 天数
from (
select
        T1.dbid,
        T1.id CQID,
        T1.headline,
        T2.name 当前状态,
        T3.login_name 所有者,
        (select T7.action_timestamp
        from CR.history T7
        where T1.dbid = T7.entity_dbid and 16777244 = T7.entitydef_id and action_name = '提交') 提交时间,
        (select top 1 T8.action_timestamp
        from CR.history T8
        where T1.dbid = T8.entity_dbid and 16777244 = T8.entitydef_id and action_name = '已完成'
        order by T8.action_timestamp desc) 解决时间
from
        CR.Defect T1,
        CR.statedef T2,
        CR.users T3
where
        T1.state = T2.id
        and T1.owner = T3.dbid
        and (T1.dbid <> 0)
        and T2.name in ('已完成')
        ) abc
where datediff(dd,abc.提交时间,abc.解决时间)<60

[ 本帖最后由 香蕉231 于 2008-5-13 13:07 编辑 ]


最佳答案
该回答被楼主/管理员列为正解!

© 本文为 香蕉231 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

具体说说咋搞定的丫..

© 本文为 asukataozi 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

楼主写的SQL语句是有点复杂,我费劲的看了半天。一刷新发现楼主说搞定了。

© 本文为 tinali 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

谢谢tinali版主的查看,那个sql语句是根据cq自动生成的sql修改的,搞了半天没搞定,后来就重新写了

© 本文为 香蕉231 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

还是没具体说咋整的~~:(

© 本文为 asukataozi 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

发新话题