Understanding how to write queries in Azure DevOps isn’t just a technical skill; it’s the secret to maintaining project velocity. In this comprehensive tutorial, I will walk you through everything from basic flat lists to advanced Work Item Query Language (WIQL) syntax.
How To Write Queries In Azure DevOps
Getting Started: The Query Editor Interface
To begin, navigate to your project in Azure DevOps. On the left-hand sidebar, click on Boards and then select Queries as shown in the screenshot below.

I always recommend starting with the All tab to see what your teammates have already built. To create your own, click on + New query.

Understanding the Anatomy of a Clause
A query is essentially a collection of “clauses.” Each clause consists of four main parts:
- And/Or: The logical connector.
- Field: The data point you’re looking for (e.g., State, Assigned To, Work Item Type).
- Operator: How you want to compare the field to a value (e.g., =, <>, Contains, Under).
- Value: The specific criteria (e.g., “Active”, “@Me”, “Bug”).

Level 1: Writing Flat List Queries
A Flat List is the most common query type. It returns a simple list of work items that meet your criteria.
Common Operators and Their Uses
I always emphasize these essential operators:
| Operator | Use Case | Example |
= | Exact match | State = Active |
<> | Not equal to | Work Item Type <> Task |
Contains | Partial text match | Title Contains "Cloud" |
In | Match any value in a list | State In (New, Approved, Committed) |
Was Ever | Historical search | Assigned To Was Ever "Michael Scott" |
Using Macros for Dynamic Results
Don’t hardcode your name or today’s date. Use Macros to make your queries “smart.”
- @Me: Automatically filters for the person running the query.
- @Today: Filters based on the current date (useful for “Modified Date > @Today – 7”).
- @CurrentIteration: Dynamically stays updated as your team moves from Sprint 1 to Sprint 2.
Level 2: Advanced Query Types (Trees and Direct Links)
You likely need to see relationships.
1. Tree of Work Items
This is used to view hierarchies. If you want to see all Features and the User Stories nested beneat