【问题标题】:How to select changed modified date of an item in t-sql如何在 t-sql 中选择项目的更改修改日期
【发布时间】:2014-07-11 17:31:15
【问题描述】:

我正在尝试获取其截止日期被推迟的工作项目的报告。我可以访问具有名为 DimWorkItem 的表的 Tfs_Warehouse 数据库。在此表中,TFS 保留了每个项目的所有历史记录。所以我的数据是这样的;

System_Id | DueDate
-------------------------------
  6130    | 2014-02-13 00:00:00.000
  6130    | 2014-02-13 00:00:00.000
  6130    | 2014-03-06 00:00:00.000
  6130    | 2014-03-11 00:00:00.000
  6130    | 2014-03-11 00:00:00.000
  6130    | 2014-03-21 00:00:00.000
  6131    | 2014-03-11 00:00:00.000
  6131    | 2014-03-11 00:00:00.000
  6131    | 2014-03-11 00:00:00.000

我需要编写这样一个查询,查询应该返回他们的DueDate 已被推迟到进一步日期的 System_Id。

所以查询应该只返回 System_Id = 6130

提前谢谢你,

【问题讨论】:

  • 这不是很清楚 - 与您要选择的 6130 相关的日期有什么特别之处?
  • 您尝试过 CurrentWorkItem 视图吗?

标签: sql sql-server tsql tfs


【解决方案1】:

使用这个:

SELECT DISTINCT System_Id
FROM (
    SELECT System_Id, DueDate, RANK()OVER(PARTITION BY System_Id ORDER BY DueDate) AS Ranking
    FROM TFS_Warehouse
    ) Z
WHERE Ranking > 1

结果:

6130

【讨论】:

    【解决方案2】:
    select System_ID
    from (
        select System_ID 
            , count(DueDate) as Dates
        from DimWorkItem
        group by System_ID
    ) z 
    where dates>1
    

    【讨论】:

      【解决方案3】:

      如果我理解正确,另一种说明问题的方式是找到至少有两个不同的 DueDate 关联的 System_id。如果是这种情况,试试这个:

      select w.System_id, count(w.DueDate) DateCount
      from Tfs_Warehouse w 
      group by w.System_id
      having COUNT(distinct w.DueDate) > 1
      

      【讨论】:

      • 我想你会想要从 Tfs_Warehouse w group by w.System_id 中选择 w.System_id,其中 COUNT(distinct DueDate) > 1
      • 在计数中包含 distinct 可能是个好主意,但在我的测试中并没有什么不同。
      猜你喜欢
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      相关资源
      最近更新 更多