2011-03-03 7 views
12

Estoy tratando de encontrar todos los artículos de trabajo que fueron asignados a una persona X en los últimos 30 días.
El gran problema que tengo es la parte "en los últimos 30 días".Buscar artículos de trabajo que fueron asignados a X en los últimos 30 días

Pensé en usar las palabras clave "alguna vez" o "como", pero no pude encontrar una buena respuesta todavía ... algo así como WHERE [Assigned To] = 'X' AND (([Assigned To] != 'X') asof '<30daysago>').
Pero esto todavía no es una solución a prueba de balas.

¿Alguna idea mejor?

Gracias & Saludos cordiales

Simon

Respuesta

13

Parece que esto no es posible utilizando sólo WIQL, pero se puede conseguir cerca.

La palabra clave @Today le dará la fecha de hoy, luego solo restará su rango de ella. La palabra clave EVER aplicada a [Status]='AssignedTo' y una comparación con una fecha de 30 días en [StateChangeDate] es lo que necesitará para lograr esto.

Lo más cerca que se puede llegar con WIQL y campos existentes:
Esto dice, de todas las revisiones (cambios de estado) devuelve registros donde el usuario 'X' ha sido alguna vez AssignedTo y el estado ha cambiado en el último 30 dias. Esto básicamente le dará una imagen borrosa de lo que su Usuario ha estado trabajando en el último mes.

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

agregar el campo que falta:
Se podría añadir un campo personalizado llamado AssignedDate que se captura durante el Nuevo-> AssignedTo transición de flujo de trabajo que se crea en la definición XML de elementos de trabajo. Puede lograr esto usando la extensión Team Tools de Power Tools de Team Foundation para Visual Studio. Esto le daría exactamente lo que necesita, así como opciones de informes adicionales en el futuro.

API TFS
no puedo ayudar con esto, pero creo que se podría consultar con la API de TFS.



Un par de trampas rápidas que he experimentado para ahorrar tiempo en ASOF de los siglos

AsOf no le ayudará por sí mismo con esto, ya que no soporta un rango de fechas. Le permite consultar como si fuera otra fecha. En otras palabras, si olvidó capturar los resultados de una consulta ayer, puede usar una consulta AsOf para obtener los resultados que habría obtenido si se hubiera ejecutado ayer. Lo que entiendo es que quieres consultar un rango de fechas básico.

EVER podría no funcionar como esperaba contra las fechas, ya que creo que usa el valor exacto del campo (se incluiría la parte de la marca de tiempo del campo de la fecha) con la que se prueba. Solo asegúrese de que la palabra clave EVER se use contra el campo de estado en lugar de una fecha.

+0

Muchas gracias. Esperé que fuera posible consultar la historia de alguna manera. Un campo adicional es demasiado, sería solo una característica "agradable de tener" para mi programa. Quizás PODRÍA ser posible usar algo como esto, pero supongo que es un exceso total :) '(([Asignado a]! = 'X') como '<30daysago>') AND (([Asignado a]! = ' X ') asof' <29daysago> ') ... ' –

+0

Lo siento, fui a almorzar antes de poder actualizar esto! Acabo de agregar tu respuesta. Estaba haciendo algunas pruebas en contra de la cláusula EVER que podría funcionar para ti. No tengo muchos datos para probar, así que me gustaría saber cuál es el criterio que tengo para ti –

+0

¡No hay problema! Lamentablemente, recibo todos los artículos de trabajo que se cambiaron en los últimos 30 días y que alguna vez me fueron asignados. Así que probé otras 2 consultas que ni siquiera analizarán ... No puedo usar NOT y EVER en combinación, no puedo usar ASOF para un solo sateo y no puedo usar [System.ChangedDate] en la cláusula where primero 'WHERE ([ Asignado a] = 'X') AND [System.ChangedDate]> = @ Today-2 Y NO ([Asignado a] NUNCA 'X') "' y segundo 'WHERE ([Asignado a] = 'X') Y [ System.ChangedDate]> = @ Today-2 AND ([Asignado a]! = 'X' ASOF [System.ChangedDate]) ' Parece que no es posible hacerlo con WIQL –

Cuestiones relacionadas