次の方法で共有


作業項目クエリ言語 (WIQL) 構文リファレンス

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

クエリをハイパーリンクとして定義するために、または作業項目クエリ言語 (REST API) を使う場合、WIQL 構文を使用できます。

WIQL 構文では、Web ポータルのクエリ エディターで使用できるすべての関数に加え、さらにいくつかの関数をサポートしています。 返されるフィールドを指定し、クエリ句の論理的なグループ化を指定できます。 さらに、ASOF 句を使って、以前の日付に基づく割り当てを基準としてフィルター処理できます。

重要

WIQL 構文は、Wiql によるクエリ REST API を実行するために使われます。 現在、API を呼び出して WIQL クエリから詳細な作業項目情報を直接返す方法はありません。 SELECT ステートメントにどのフィールドを含めても、API は作業項目 ID のみを返します。 完全な情報を取得するには、2 つの手順を実行する必要があります。(1) WIQL から作業項目の ID を取得し、(2) ID と特定のフィールドで作業項目の一覧を取得することで作業項目を取得します。

前提条件

クエリは、[作業項目の表示] または [このノードの作業項目を表示します] アクセス許可がある作業項目のみを返します。 通常、これらのアクセス許可は、各チーム プロジェクトの閲覧者および共同作成者グループのメンバーに付与されます。 詳細については、アクセス許可とグループに関する記事を参照してください。

クエリ言語の概要

作業項目のクエリ言語は、次の構文スニペットに示され、次の表で説明される 5 つの部分で構成されます。 WIQL 構文では、大文字と小文字が区別されません。

SELECT
    [System.Id],
    [System.AssignedTo],
    [System.State],
    [System.Title],
    [System.Tags]
FROM workitems
WHERE
    [System.TeamProject] = 'Design Agile'
    AND [System.WorkItemType] = 'User Story'
    AND [System.State] = 'Active'
ORDER BY [System.ChangedDate] DESC
ASOF '02-11-2020'

ヒント

Wiql エディター Marketplace 拡張機能をインストールすると、クエリ エディターを使ってクエリを構築し、WIQL 構文を表示できます。 その後、WIQL 構文をコピーして変更し、Boards に追加された Wiql プレイグラウンド ハブを使ってクエリを実行することができます。

SELECT

クエリによって返される作業項目ごとに、返すフィールドを特定します。 フレンドリ名または参照名のいずれかを指定できます。 名前に空白またはピリオドが含まれている場合は、角かっこ ([]) を使います。

FROM

クエリで作業項目と作業項目間のリンクのどちらを検索するかを指定します。

  • 作業項目を返すには FROM WorkItems を使います。
  • 作業項目間のリンクを返すには FROM workItemLinks を使います。 詳細については、この記事で後述する「作業項目間のリンクのクエリ」を参照してください。

WHERE

クエリのフィルター条件を指定します。 詳細については、後述する、フィルター条件 (WHERE) に関する記事を参照してください。

ORDER BY

返される作業項目の並べ替え順序を指定します。 1 つ以上のフィールドに対して、昇順 (Asc) または降順 (Desc) を指定できます。 次に例を示します。
ORDER BY [State] Asc, [Changed Date] Desc

ASOF

フィルターを適用する日付を指定して、履歴クエリを指定します。 たとえば、このクエリは、2020 年 2 月 11 日に "アクティブ" と定義されていたすべてのユーザー ストーリーを返します。 日付は、「日付と時刻のパターン」で説明されているガイダンスに従って指定します。 ASOF '02-11-2020'

注意

Azure Boards に対して行うクエリの WIQL 長は、32,000 文字以内にする必要があります。 システムでは、その長さを超えるクエリを作成または実行することはできません。

日付と時刻のパターン

DateTime フィールドに入力する日付と時間のパターンは、プロファイルで選んだものと一致する必要があります。 選んだ内容を確認または変更するには、「ユーザーの優先設定を設定する」を参照してください。

[時刻とロケール] ペインの [日付パターン] ドロップダウン オプションを示すスクリーンショット。[時刻とロケール] ペインの [時刻パターン] ドロップダウン オプションを示すスクリーンショット。

[日付パターン] フィールドと [時刻パターン] フィールドを含む [時刻とロケール] ペインを示すスクリーンショット。

比較で使う DateTime リテラルは引用符 (単一引用符、二重引用符がサポートされています) で囲みます。 これらは、クエリを実行するローカル クライアント コンピューターの .NET DateTime 形式である必要があります。 タイム ゾーンが指定されていない限り、DateTime リテラルはローカル コンピューターのタイム ゾーンになります。

WHERE 
   AND [System.ChangedDate] >= '01-18-2019 GMT'
   AND ([Closed Date] < '01-09-2022 GMT'
   OR [Resolved Date] >= '01-18-2019 14:30:01')  

DateTime リテラルで時刻が省略され、dayPrecision パラメーターが false の場合、時刻は 0 (深夜) と見なされます。 dayPrecision パラメーターの既定の設定は false です。

また、ロケールに関係なく有効な ISO 8601 形式を指定することもできます。 ISO 8601 は、年から始まり、月、日、時、分、秒、ミリ秒の順で日付と時刻を表します。 たとえば、2021-12-10 15:00:00.000 は、現地時間で 2021 年 12 月 10 日午後 3 時を表します。 ISO 8601 形式の使用例は以下のとおりです。

WHERE 
   AND [System.ChangedDate] >= '2019-01-18T00:00:00.0000000'
   AND ([Closed Date] < '2022-01-09T00:00:00.0000000'
   OR [Resolved Date] >= '2019-01-18T00:00:00.0000000')  

カスタム フィールド

クエリ句にカスタム フィールドを追加できます。 WIQL では、カスタム フィールドの参照名を指定する必要があります。 継承済みプロセス モデルを使うプロジェクトでは、カスタム フィールドは、通常、名前の前に Custom. を付けて、スペースを削除したラベルが付けられます。 次に例を示します。

フレンドリ名 参照名
承認者 Custom.Approver
要求の種類 Custom.RequestType
スコープの見積もり Custom.CustomEstimate

オンプレミス XML プロセス モデルを使うプロジェクトでは、参照名は XML 作業項目の種類の定義によって定義されたとおりになります。

詳細については、作業項目のフィールドと属性を参照してください。

フィルター句を指定する (WHERE)

WHERE 句は、フィルター条件を指定します。 クエリは、指定された条件を満たす作業項目のみを返します。 たとえば、次の例の WHERE 句は、アクティブなユーザー ストーリーで、自分に割り当てられているものを返します。

WHERE [Work Item Type] = 'User Story'
   AND [State] = 'Active'
   AND [Assigned to] = @Me

論理演算子をかっこで囲んでフィルター条件をグループ化することで、論理演算子の評価順序を制御することができます。 たとえば、自分に割り当てられているか、自分がクローズした作業項目を返すには、クエリ フィルターを次の例に合わせて変更します。

WHERE
    [System.TeamProject] = @project
    AND (
        [System.WorkItemType] = 'Product Backlog Item'
        AND (
            [System.AssignedTo] = @me
            OR [Microsoft.VSTS.Common.ClosedBy] = @me
        )
    )

フィルター条件

各フィルター条件は、3 つの部分から構成され、それぞれが次の規則に適合している必要があります。

  • フィールド: 参照名またはフレンドリ名のいずれかを指定できます。 次に、有効なWIQL構文の例を示します。
    • 参照名: SELECT [System.AssignedTo] ...
    • スペースを含むフレンドリ名: SELECT [Assigned To] ...
    • スペースを含まない名前には角かっこは必要ありません: SELECT ID, Title ...
  • 演算子: 有効な値についてはこの記事の後の「演算子」セクションで明記されています。
  • フィールド値: 指定するフィールドに応じて、次の 3 つの値のいずれかを指定できます。
    • "リテラル値" は、フィールド値のデータ型と一致する必要があります。
    • 特定の値を示す *変数またはマクロ。 たとえば、@Me はクエリを実行しているユーザーを示します。 詳細については、この記事の後の「マクロと変数」を参照してください。
    • 別の "フィールド" の名前。 たとえば、[Assigned to] = [Changed by] を使用すると、作業項目を最近変更したユーザーに割り当てられている作業項目を検索できます。

すべてのシステム定義フィールドの説明と参照名については、作業項目フィールドのインデックスに関する記事を参照してください。

演算子

クエリでは、論理式を使って結果セットを修飾します。 これらの論理式は、1 つ以上の結合された操作によって形成されます。

いくつかの簡単なクエリ操作を以下に示します。

WHERE
    [System.TeamProject] = @project
    AND [System.WorkItemType] <> ''
    AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
    AND [Microsoft.VSTS.Common.Severity] <> '1 - Critical'

次の表は、さまざまなフィールド型でサポートされているすべての演算子をまとめたものです。 各フィールド型の詳細については、「作業項目のフィールドと属性」を参照してください。

=, <>, >, <, >=, and <= 演算子は期待したとおりに機能します。 たとえば、System.ID > 100 は 100 より大きい ID を持つすべての作業項目に対するクエリを行います。 System.ChangedDate > '01-01-19 12:00:00' は、2019 年 1 月 1 日の正午より後に変更されたすべての作業項目に対するクエリを行います。

これらの基本的な演算子以外にも、特定のフィールド型に固有の動作と演算子がいくつか存在します。

注意

使用できる演算子は、プラットフォームとバージョンによって異なります。 詳細については、クエリ クイック リファレンスを参照してください。

フィールド型

サポートされている演算子

Boolean

= , <> , =[Field] , <>[Field]

DateTime

= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], In, Not In, Was Ever

Double、GUID、Integer

= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], In, Not In, Was Ever

ID

= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], Contains, Not Contains, In, Not In, In Group, Not In Group, Was Ever

PlainText

Contains Words, Not Contains Words, Is Empty, Is Not Empty

String

= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], Contains, Not Contains, In, Not In, In Group, Not In Group, Was Ever

TreePath

=, <>, In, Not In, Under, Not Under

論理グループ化

一般的なブール値の意味で ANDOR という用語を使って、2 つの句を評価できます。 AND EVER 演算子を指定する場合、OR EVERWAS EVER という用語を使用できます。 必要に応じて、論理式をグループ化し、さらに結合することができます。 次に示すのは例です。

WHERE
    [System.TeamProject] = @project
    AND (
        [System.WorkItemType] <> ''
        AND [System.State] IN ('Active', 'Approved', 'Committed', 'In Progress')
        AND (
            [System.CreatedBy] = ''
            OR [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
        )
    )

contains, under, を使うと、innot 演算子を否定することができます。 ever 演算子を否定することはできません。 次の例では、Fabrikam Fiber\Account Management のサブツリーの下に割り当てられていないすべての作業項目のクエリを実行します。

WHERE
    [System.TeamProject] = @project
    AND [System.WorkItemType] <> ''
    AND NOT [System.AreaPath] UNDER 'Fabrikam Fiber\Account Management'

クエリの例: 次の値と等しかったことがある、割り当て先

次のクエリ エディターの例は、Jamal Hartnett に割り当てられたことのあるすべての作業項目を検索します。

クエリ エディター、単純なリストのクエリ、

対応する WIQL 構文を次に示します。

SELECT
    [System.Id],
    [System.Title],
    [System.State],
    [System.IterationPath]
FROM workitems
WHERE
    [System.TeamProject] = @project
    AND [System.WorkItemType] <> ''
    AND EVER [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'

マクロまたは変数

次の表は、WIQL クエリ内で使用できるマクロまたは変数の一覧です。

マクロ 使用方法
@Me この変数を使用すると、ユーザー エイリアスを含むフィールドで、現在のユーザーのエイリアスを自動検索できます。 たとえば、自分が開いた作業項目を検索するには、[フィールド] 列を [アクティブ化した人] に、[演算子] 列を = に、[値] 列を @Me に、それぞれ設定します。
@CurrentIteration この変数を使うと、選んだチームの現在のスプリントに割り当てられた作業項目を、選んだチームのコンテキストに基づいて自動的にフィルター処理することができます。
@Project この変数を使うと、現在のプロジェクト内の作業項目を検索できます。 たとえば、現在のチーム プロジェクト内のすべての作業項目を検索するには、[フィールド] 列を [チーム プロジェクト] に、[演算子] 列を = に、[値] 列を @Project に、それぞれ設定します。
@StartOfDay
@StartOfWeek
@StartOfMonth
@StartOfYear
これらのマクロを使うと、現在の日、週、月、年の開始日、またはこれらの値のいずれかのオフセットに基づいて、DateTime フィールドをフィルター処理します。 たとえば、[フィールド] 列を [作成日] に、[演算子] 列を >= に、[値] 列を @StartOfMonth - 3 にそれぞれ設定すると、過去 3 か月に作成されたすべての項目を検索できます。
@Today この変数を使用すると、現在の日付または以前の日付に関連する作業項目を検索できます。 また、@Today 変数から日数を引いた値を使うこともできます。 たとえば、[フィールド] 列を [アクティブ化された日] に、[演算子] 列を >= に、[値] 列を @Today - 7 にそれぞれ設定すると、過去 1 週間にアクティブ化されたすべての項目を検索できます。
[Any] この変数を使用すると、特定のフィールドに定義されている値に関連した作業項目が検索されます。

@me マクロ

@me マクロは、クエリを実行するユーザーの Windows 統合アカウント名に置き換えられます。 次の例では、マクロと同等の静的ステートメントを使う方法を示しています。 このマクロは、Assigned To などの ID フィールドでの使用を目的としています。

WHERE  
   [System.AssignedTo] = @Me 

@today マクロ

@today マクロは、任意の DateTime フィールドで使用できます。 このマクロは、クエリを実行するローカル コンピューターの現在の日付の午前 0 時に置き換えられます。 また、@today+x の x 日後、@today-y の y 日前は、それぞれ @today@today としてオフセットを整数で指定できます。 @today マクロを使ったクエリは、実行されるタイム ゾーンによって異なる結果セットを返すことができます。

次の例では、今日が 2019/1/3 であると想定しています。

WHERE  
   [System.CreatedDate] = @today

上記は、次と同じです。

WHERE  
   [System.CreatedDate] = '01-03-2019'

および

WHERE  
   [System.CreatedDate] > @today-2

上記は、次と同じです。

WHERE  
   [System.CreatedDate] > '01-01-2019'

@StartOfDay、@StartOfWeek、@StartOfMonth、@StartOfYear マクロ

@StartOf... マクロは、任意の DateTime フィールドで使用できます。 このマクロは、クエリを実行するローカル コンピューターの現在の日、週の始まり、月の始まり、または年の始まりの真夜中に置き換えられます。

注意

Azure DevOps Server 2019 Update 1 以降のバージョンが必要です。

これらのマクロは、(+/-)nn(y|M|w|d|h|m) の形式を持つ修飾子文字列を受け入れます。 @Today マクロと同様に、プラスまたはマイナスの整数オフセットを指定できます。 時間単位修飾子が省略された場合は、関数の自然な期間が既定値となります。 たとえば、@StartOfWeek("+1")@StartOfWeek("+1w") と同じです。 プラス/マイナス (+/-) 記号が省略された場合は、プラスと見なされます。

この構文では、修飾子を入れ子にしたり、クエリを 2 回オフセットしたりできます。 たとえば、Closed Date >= @StartOfYear - 1 という句は、昨年以降に終了した作業項目をフィルター処理します。 これを Closed Date >= @StartOfYear('+3M') - 1 に変更することで、昨年の最初の 3 か月以内に終了した作業項目が除外されます。 WIQL の構文は、次の例のとおりです。

WHERE 
   [Microsoft.VSTS.Common.ClosedDate] >=@StartOfYear('+3M') - 1

次の例では、今日が 2019/4/5 であると想定しています。

WHERE  
   [Microsoft.VSTS.Common.CreatedDate] >= @StartOfMonth-3

上記は、次と同じです。


WHERE 
   [Microsoft.VSTS.Common.CreatedDate] >= '01-01-2019'

および

WHERE 
   [Microsoft.VSTS.Scheduling.TargetDate] > @StartOfYear

上記は、次と同じです。

WHERE 
   [Microsoft.VSTS.Scheduling.TargetDate]  > '01-01-2019'

カスタム マクロ

WIQL は任意のカスタム マクロもサポートしています。 @によってプレフィックスされた文字列は、カスタムマクロとして扱われ、置き換えられます。 カスタム マクロの置換値は、オブジェクト モデル内のクエリ メソッドの context パラメーターから取得されます。 次のメソッドは、マクロに使われる API です。

public WorkItemCollection Query(string wiql, IDictionary context)

context パラメーターには、マクロのキーと値のペアが含まれています。 たとえば、コンテキストに (プロジェクト、MyProject) のキーと値のペアが含まれている場合、WIQLでは@projectMyProjectに置き換えられます。 この置換は、Visual Studio で作業項目クエリ ビルダーが @project マクロを処理する方法です。

履歴クエリを指定する (ASOF)

クエリで ASOF 句を使うと、特定の日付と時刻に定義された、指定したフィルター条件を満たす作業項目をフィルター処理できます。

注意

Visual Studio のクエリ ビルダーでは、ASOF クエリは作成できません。 ASOF 句を含むクエリ ファイル (.wiq) を作成して、それを Visual Studio で読み込んだ場合、ASOF 句は無視されます。

ある作業項目がイテレーション パスFabrikam Fiber\Release 1 の下に分類され、2022 年 5 月 5 日より前に 'Jamal Hartnett' に割り当てられたとします。 ただし、この作業項目は最近 'Raisa Pokrovskaya' に割り当てられ、新しいイテレーション パスである Release 2 に移動しました。 次の例では、Jamal Hartnettに割り当てられた作業項目を返します。クエリが過去の日時における作業項目の状態に基づいているためです。

SELECT
    [System.Id],
    [System.Title],
    [System.State],
    [System.IterationPath]
FROM workitems
WHERE
    [System.TeamProject] = @project
    AND [System.WorkItemType] <> ''
    AND ([System.IterationPath] UNDER 'Fabrikam Fiber\Release 1'
    AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>') 
    ASOF  '01-05-2022 00:00:00.0000000'

Note

時刻が指定されていない場合、WIQL では午前 0 時が使われます。 タイム ゾーンが指定されていない場合、WIQL はローカル クライアント コンピューターのタイム ゾーンを使います。

並べ替え順序を設定する (ORDER BY)

ORDER BY 句を使って、クエリの結果を 1 つ以上のフィールドで昇順または降順に並べ替えることができます。

注意

データ層の SQL サーバーの並べ替え設定によって、既定の並べ替え順序が決まります。 ただし、asc または desc パラメーターを使って、明示的な並べ替え順序を選択できます。

次の例では、作業項目を最初に優先度の昇順 (既定の) で並べ替え、次に作成日の降順 (DESC) で並べています。

SELECT
    [System.Id],
    [System.Title],
    [System.State],
    [System.IterationPath]
FROM workitems
WHERE
    [System.TeamProject] = @project
    AND [System.WorkItemType] <> ''
    AND [System.State] =  'Active'
    AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
ORDER BY [Microsoft.VSTS.Common.Priority],
    [System.CreatedDate] DESC

作業項目間のリンクを返すには、FROM WorkItemLinks を指定します。 WHERE 句のフィルター条件は、リンク、またはリンクのソースかターゲットである任意の作業項目に適用されます。 たとえば、次のクエリは、プロダクト バックログ項目とそのアクティブな子項目間のリンクを返します。

SELECT
    [System.Id],
    [System.Title],
    [System.State],
    [System.IterationPath]
FROM workitemLinks
WHERE
    (
        [Source].[System.TeamProject] = @project
        AND [Source].[System.WorkItemType] = 'Product Backlog Item'
    )
    AND (
        [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'
    )
    AND (
        [Target].[System.TeamProject] = @project
        AND [Target].[System.WorkItemType] <> ''
        AND [Target].[System.State] <> 'Closed'
    )
ORDER BY [Microsoft.VSTS.Common.Priority],
    [System.CreatedDate] DESC
MODE (Recursive)

次の表は、作業項目のクエリと、作業項目間のリンクに対するクエリの違いをまとめたものです。

作業項目

作業項目間のリンク

FROM

FROM WorkItems

FROM WorkItemLinks

WHERE

[FieldName] = Value

Specify one or more of the following:
[Source].[FieldName] = Value
[Target].[FieldName] = Value
[System.Links.LinkType] = 'LinkName'

MODE

適用外

次のいずれかを指定します。

  • MODE (MustContain): (既定値) ソース、ターゲット、およびリンクの条件がすべて満たされている WorkItemLinkInfo レコードのみを返します。
  • MODE (MayContain): ターゲット条件を満たすリンクされた作業項目がなくても、ソースおよびリンク条件を満たすすべての作業項目の WorkItemLinkInfo レコードを返します。
  • MODE (DoesNotContain): リンクおよびターゲット条件を満たすリンクされた作業項目がない場合にのみ、ソース条件を満たすすべての作業項目の WorkItemLinkInfo レコードを返します。
  • MODE (Recursive): ツリー クエリ ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward') に使います。 リンクの種類は、ツリー トポロジで順方向である必要があります。 WorkItemLinkInfo レコードは、ソースを満たすすべての作業項目について、ターゲットに対して再帰的に返されます。 ORDER BYASOF は、ツリー クエリと互換性がありません。

RETURNS

次のいずれかのシステム リンクの種類名を指定できます。

次のシステム リンクの種類名、またはオンプレミス XML プロセスで定義したカスタム リンクの種類のいずれかを指定できます。

  • System.LinkTypes.Hierarchy-Forward
  • System.LinkTypes.Related
  • System.LinkTypes.Dependency-Predecessor
  • System.LinkTypes.Dependency-Successor
  • Microsoft.VSTS.Common.Affects-Forward (CMMI プロセス)

詳細については、リンクの種類のリファレンスを参照してください。

ツリー型のクエリ例

次のクエリは、現在のプロジェクトで定義されているすべての作業項目の種類を返します。 クエリ エディターに表示されるクエリは、次の画像のように表示されます。

クエリ エディター、ツリー クエリ、すべての作業項目と状態のスクリーンショット。

同等の WIQL 構文を以下に示します。

SELECT
    [System.Id],
    [System.Title],
    [System.State],
    [System.IterationPath]
FROM workitemLinks
WHERE
    (
        [Source].[System.TeamProject] = @project
        AND [Source].[System.WorkItemType] <> ''
        AND [Source].[System.State] <> ''
    )
    AND (
        [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'
    )
    AND (
        [Target].[System.TeamProject] = @project
        AND [Target].[System.WorkItemType] <> ''
    )
MODE (Recursive)


次のクエリは、現在のプロジェクトで定義されているすべての作業項目の種類を返します。 クエリ エディターに表示されるクエリは、次の画像のように表示されます。

クエリ エディター、直接リンク クエリ、すべての作業項目と状態のスクリーンショット。

同等の WIQL 構文は、次のとおりです。

SELECT
    [System.Id],
    [System.WorkItemType],
    [System.Title],
    [System.AssignedTo],
    [System.State]
FROM workitemLinks
WHERE
    (
        [Source].[System.TeamProject] = @project
        AND [Source].[System.WorkItemType] <> ''
        AND [Source].[System.State] <> ''
    )
    AND (
        [System.Links.LinkType] = 'System.LinkTypes.Dependency-Reverse'
        OR [System.Links.LinkType] = 'System.LinkTypes.Related-Forward'
        OR [System.Links.LinkType] = 'System.LinkTypes.Dependency-Forward'
    )
    AND (
        [Target].[System.TeamProject] = @project
        AND [Target].[System.WorkItemType] <> ''
        AND [Target].[System.ChangedDate] >= @today - 60
    )
ORDER BY [System.Id]
MODE (MustContain)

その他のクエリ例

次の一般的な WIQL クエリの例では、フィールドに参照名を使っています。 クエリでは、Priority=1 の作業項目 (作業項目の種類は指定されていない) を選びます。 クエリは、戻り値セットの IDTitle を列として返します。 結果は ID で昇順に並べ替えられます。

SELECT
    [System.Id],
    [System.Title],
    [System.State],
    [System.IterationPath]
FROM workitems
WHERE
    [System.TeamProject] = @project
    AND [Microsoft.VSTS.Common.Priority] <> ''
ORDER BY [System.Id]

日付-時刻パターン

日付-時刻パターンは、次の 2 つのパターンのいずれかに従って指定します。

AND [System.ChangedDate] >= '1/1/2019 00:00:00Z'

句の例

次のステートメント例では、具体的な修飾句を示しています。

AND

SELECT [System.Id], [System.Title]
FROM WorkItems
WHERE [System.TeamProject] = @project
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'

OR

SELECT [System.Id], [System.Title] 
FROM WorkItems 
WHERE [System.TeamProject] = @project 
AND ( [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
OR [System.AssignedTo] = ''Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>' )

NOT

SELECT [System.Id], [System.Title] 
FROM WorkItems 
WHERE [System.TeamProject] = @project 
AND [System.AssignedTo] EVER 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
AND [System.AssignedTo] NOT CONTAINS 'Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>'

EVER

SELECT [System.Id], [System.Title] 
FROM WorkItems 
WHERE [System.TeamProject] = @project 
AND [System.AssignedTo] EVER 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'

UNDER

SELECT [System.Id], [System.Title] 
FROM WorkItems 
WHERE [System.TeamProject] = @project 
AND [System.AssignedTo] EVER 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
AND [System.AreaPath] UNDER 'Agile1\Area 0'

ORDER BY

SELECT [System.Id], [System.Title] 
FROM WorkItems 
WHERE [System.TeamProject] = @project 
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
ORDER BY [System.Id] [asc | desc]

ASOF (時間フィルター)

SELECT [System.Title] 
FROM workitems 
WHERE [System.IterationPath] = 'MyProject\Beta' 
AND [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>' 
ASOF '3/16/19 12:30'

文字列とプレーンテキスト

文字列またはプレーンテキスト フィールドとの比較では、文字列リテラルは引用符 (単一引用符、二重引用符がサポートされています) で囲みます。 文字列リテラルは、すべての Unicode 文字をサポートします。

WHERE [Custom.Blocking] = 'Not Blocking'
WHERE [Custom.Blocking] <> 'Blocked'

contains 演算子を使うと、フィールド値の任意の場所にある部分文字列を検索できます。

WHERE [System.Description] contains 'WIQL' 

区分とイテレーション (TreePath)

区分とイテレーション パス フィールドでは、UNDER 演算子を使用できます。 UNDER 演算子は、値が特定の分類ノードのサブツリー内にあるかどうかを評価します。 たとえば、次の式は、区分パスが 'MyProject\Server\Administration'、'MyProject\Server\Administration\Feature 1'、'MyProject\Server\Administration\Feature 2\SubFeature 5'、またはサブツリー内の他のノードであれば true と評価されます。

WHERE [System.AreaPath] UNDER 'MyProject\Server\Administration'

修飾子と特殊演算子

クエリ式では、いくつかの修飾子と特殊演算子を使用できます。

フィールド値がいずれかの値セットと等しいかどうかを評価するには、IN 演算子を使います。 この演算子は、String、Integer、Double、DateTime フィールド型でサポートされています。 次の例で、意味が等価なものと共に確認してください。

WHERE
    [System.TeamProject] = @project
    AND [System.CreatedBy] IN ('Jamal Hartnett <fabrikamfiber4@hotmail.com>', 'Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>', 'Christie Church <fabrikamfiber1@hotmail.com>')

or

WHERE
    [System.TeamProject] = @project
    AND (
        [System.CreatedBy] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
        OR [System.CreatedBy] = 'Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>'
        OR [System.CreatedBy] = 'Christie Church <fabrikamfiber1@hotmail.com>'
    )

EVER 演算子は、作業項目の過去のすべてのリビジョンを通して、フィールド値が特定の値と等しいか、または等しかったことがあるかを評価するために使われます。 String、Integer、Double、DateTime フィールド型で、この演算子がサポートされています。 EVER 演算子には別の構文があります。 たとえば、次の例は、すべての作業項目が Jamal、Raise、または Christie に割り当てられたことがあるかどうかのクエリを実行するものです。

WHERE
    [System.TeamProject] = @project
    AND (
        EVER [System.AssignedTo] = 'Jamal Hartnett <fabrikamfiber4@hotmail.com>'
        OR EVER [System.AssignedTo] = 'Raisa Pokrovskaya <fabrikamfiber5@hotmail.com>'
        OR EVER [System.AssignedTo] = 'Christie Church <fabrikamfiber1@hotmail.com>'
    )