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)