2011-03-03 176 views
12

我正在嘗試查找在過去30天內分配給X人員的所有WorkItems。
我遇到的最大問題是「在過去30天」 - 部分。查找在過去30天內分配給X的工作項目

我曾考慮過使用「ever」或「asof」這個關鍵字,但是找不到一個好的答案,像WHERE [Assigned To] = 'X' AND (([Assigned To] != 'X') asof '<30daysago>')
但這仍然不是一個防彈解決方案。

有什麼更好的點子?

感謝&親切的問候

西蒙

回答

13

看來,這僅僅使用WIQL是不可能的,但你可以親近。

關鍵字@Today會給你今天的日期,然後從中減去你的範圍。將EVER關鍵字應用於[Status]='AssignedTo',並將過去30天的日期與[StateChangeDate]進行比較,您需要完成此操作。

儘可能靠近你可以用WIQL獲取和現有油田:用戶通過「X」以往任何時候都AssignedTo和國家
這表示,所有版本(狀態變化)返回的記錄,在過去已經改變30天。這基本上會給你一個關於你的用戶在上個月一直在做什麼的模糊畫面。

WHERE [Microsoft.VSTS.Common.StateChangeDate] >= @today - 30 
    AND [System.AssignedTo] EVER 'Bennett Aaron' 
    ORDER BY [System.State] 

添加缺少的領域
你可以添加的是,你在工作項目定義XML創建新建 - > AssignedTo工作流程轉變過程中捕獲的自定義字段名爲AssignedDate。您可以使用Visual Studio的Team Foundation Server Power Tools擴展完成此操作。這將爲您提供您所需的信息以及其他報告選項。

TFS API
我不能幫你這一個,但我相信你可以查詢使用TFS API。



一對夫婦快速陷阱我已經經歷爲您節省時間和ASOF有史以來:

AsOf不會幫你本身有這個,因爲它不支持日期範圍。它允許你查詢它是否是另一個日期。換句話說,如果您昨天忘記捕獲查詢結果,則可以使用AsOf查詢來獲取昨天運行時得到的結果。我的理解是你想查詢一個基本的日期範圍。

EVER可能無法正常工作,因爲我相信它會使用測試的字段的確切值(包含日期字段的時間戳部分)。只要確保EVER關鍵字用於狀態字段而不是日期。

+0

非常感謝。我希望能夠以某種方式查詢歷史。額外的領域太多了,它只是我的程序「很高興有」功能。 也許它可以使用類似這樣的東西,但我想這只是總的矯枉過正:) '(([Assigned To]!='X')asof'<30daysago>')AND(([Assigned To]!=' X')asof'<29daysago>')...' –

+0

對不起,在我能更新這個之前去吃午飯!剛剛添加了你的答案。我正在對可能適用於您的EVER子句進行一些測試。我沒有太多的數據可供測試,所以我很想知道我的退貨標準 –

+0

沒問題!不幸的是,我得到的所有WorkItems在過去30天內都發生了變化,並且曾經分配給我。所以我嘗試了2個其他的查詢甚至不會解析......我不能使用NOT和EVER組合,不能使用ASOF作爲單個片段,並且不能在where子句中使用[System.ChangedDate] 第一個WHERE([分配給] ='X')AND [System.ChangedDate]> = @今天-2 AND NOT([賦值給] EVER'X')「'和第二個'WHERE([賦值給] ='X')AND [ System.ChangedDate]> = @ Today-2 AND([Assigned To]!='X'ASOF [System.ChangedDate])' 似乎只能用WIQL來做到這一點 –

相關問題