WIQL: сравнить исходное поле с целевым полем

Я пытаюсь создать WIQL-запрос, который сравнивает содержимое поля рабочего элемента и связанных с ним (связанных) рабочих элементов, например, когда "состояние" рабочего элемента отличается от "состояния" соответствующего рабочего элемента.

SELECT [System.Id], ... FROM WorkItemLinks WHERE ...
[Source].[System.State] <> [Target].[System.State])
ORDER BY [System.CreatedDate] desc, [System.AssignedTo] mode(MayContain)

(... Выше указаны только части, которые я здесь опущен для ясности.)

Когда я пытаюсь применить запрос, я получаю сообщение об ошибке из TFS:

Ссылочный запрос не может смешивать выражения с разными префиксами

Есть ли способ сравнить исходные и целевые поля с WIQL?

1 ответ

Нет, так же, как и в сообщении об ошибке, нельзя смешивать выражения с разными префиксами. Таким образом, вы не можете сравнивать поле в Source и Target напрямую. Обратитесь к этой ссылке из MSDN для получения подробной информации: http://blogs.msdn.com/b/team_foundation/archive/2010/07/02/wiql-syntax-for-link-query.aspx

Однако для полей с предопределенными значениями списка вы можете написать запрос, подобный следующему, чтобы получить желаемую функцию.

SELECT [System.Id] FROM WorkItemLinks WHERE 
([Source].[System.State] = ‘New’ and [Target].[System.State] <> ‘New’) 
OR ([Source].[System.State] = ‘Resolved’ and [Target].[System.State] <> ‘Resolved’)
OR ([Source].[System.State] = ‘Active’ and [Target].[System.State] <> ‘Active’)
OR ([Source].[System.State] = ‘Closed’ and [Target].[System.State] <> ‘Closed’)
ORDER BY [System.CreatedDate] desc, [System.AssignedTo] mode(MayContain)
Другие вопросы по тегам