Dela via


Referens för WIQL-syntax (Work Item Query Language)

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Du kan använda WIQL-syntaxen för att definiera en fråga som en hyperlänk eller när du använder REST API (Work Item Query Language).

WIQL-syntaxen stöder alla funktioner som är tillgängliga via webbportalen Power Query-redigeraren plus några fler. Du kan ange fälten som ska returneras och ange logisk gruppering av frågesatser. Dessutom kan du använda en ASOF sats för att filtrera baserat på tilldelningar baserat på ett tidigare datum.

Viktigt!

WIQL-syntaxen används för att köra REST-API:et Query By Wiql. För närvarande finns det inget sätt att anropa API:et för att returnera detaljerad information om arbetsobjektet från en WIQL-fråga direkt. Oavsett vilka fält du inkluderar i SELECT-instruktionen returnerar API:et endast arbetsobjektets ID:n. För att få fullständig information måste du utföra två steg: (1) hämta ID:t för arbetsobjekten från en WIQL och (2) hämta arbetsobjekten via Hämta en lista över arbetsobjekt efter ID och för specifika fält.

Förutsättningar

En fråga returnerar endast de arbetsobjekt där du har behörigheten Visa arbetsobjekt eller Visa arbetsobjekt i den här noden . Dessa behörigheter beviljas vanligtvis till medlemmar i grupperna Läsare och Deltagare för varje teamprojekt. Mer information finns i Behörigheter och grupper.

Översikt över frågespråk

Frågespråket för arbetsobjektet innehåller fem delar som visas i följande syntaxfragment och beskrivs i följande tabell. WIQL-syntaxen är inte skiftlägeskänslig.

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'

Dricks

Genom att installera Wiql Editor Marketplace-tillägget kan du konstruera dina frågor med hjälp av Power Query-redigeraren och sedan visa WIQL-syntaxen. Du kan sedan kopiera och ändra WIQL-syntaxen och köra frågan med wiql playground-hubben som lagts till i Boards.

Klausul

Exempel

SELECT

Identifierar fälten som ska returneras för varje arbetsobjekt som returneras av frågan. Du kan ange antingen det egna namnet eller referensnamnet. Använd hakparenteser ([]) om namnet innehåller blanksteg eller punkter.

FROM

Anger om du vill att frågan ska hitta arbetsobjekt eller länkar mellan arbetsobjekt.

  • Använd FROM WorkItems för att returnera arbetsobjekt.
  • Använd FROM workItemLinks för att returnera länkar mellan arbetsobjekt. Mer information finns i Frågor om länkar mellan arbetsobjekt senare i den här artikeln.

WHERE

Anger filtervillkoren för frågan. Mer information finns i Filtervillkor (WHERE) senare i den här artikeln.

ORDER BY

Anger sorteringsordningen för de arbetsobjekt som returneras. Du kan ange Stigande (Asc) eller Fallande (Desc) för ett eller flera fält. Till exempel:
ORDER BY [State] Asc, [Changed Date] Desc

ASOF

Anger en historisk fråga genom att ange ett datum för när filtret ska tillämpas. Den här frågan returnerar till exempel alla användarberättelser som definierades som Aktiva den 11 februari 2020. Ange datumet enligt vägledningen i datum- och tidsmönstret. ASOF '02-11-2020'

Kommentar

WIQL-längden för frågor som görs mot Azure Boards får inte överstiga 32 000 tecken. Systemet tillåter inte att du skapar eller kör frågor som överskrider den längden.

Datum- och tidsmönster

Datum- och tidsmönstret som du anger för DateTime-fälten ska matcha det som du väljer via din profil. Information om hur du visar eller ändrar ditt val finns i Ange användarinställningar för Tid och nationella inställningar.

Skärmbild som visar listrutealternativen Datummönster i fönstret Tid och Nationella inställningar.Skärmbild som visar listrutan Tidsmönster i fönstret Tid och Nationella inställningar.

Skärmbild som visar fönstret Tid och nationella inställningar med fälten Datummönster och Tidsmönster.

Citattecken (enkla eller dubbla citattecken stöds) DateTime-literaler som används i jämförelser. De måste vara i .NET DateTime-format för den lokala klientdatorn som kör frågan. Om inte en tidszon har angetts finns DateTime-literaler i tidszonen för den lokala datorn.

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

När tiden utelämnas i en DateTime-literal och dayPrecision-parametern är lika med false antas tiden vara noll (midnatt). Standardinställningen för parametern dayPrecision är false.

Eller så kan du ange ISO 8601-format som är giltigt oavsett språkvariant. ISO 8601 representerar datum och tid genom att börja med året, följt av månad, dag, timme, minuter, sekunder och millisekunder. Till exempel 2021-12-10 15:00:00.000, representerar den 10 december 2021 kl. 15.00 lokal tid. Ett exempel på hur du använder ISO 8601-format är följande.

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')  

Anpassade fält

Du kan lägga till ett anpassat fält i en frågesats. Med WIQL måste du ange referensnamnet för det anpassade fältet. För projekt som använder en ärvd processmodell är anpassade fält vanligtvis märkta med Anpassad. läggs till i deras namn och blanksteg tas bort. Till exempel:

Användarvänligt namn Referensnamn
Godkännare Custom.Approver
Typ av begäran Custom.RequestType
Uppskatta omfattning Custom.CustomEstimate

För projekt som använder den lokala XML-processmodellen definieras referensnamnet av definitionerna för XML-arbetsobjekt.

Mer information finns i Fält och attribut för arbetsobjekt.

Ange filtersatser (WHERE)

Satsen WHERE anger filtervillkoren. Frågan returnerar endast arbetsobjekt som uppfyller de angivna kriterierna. Följande exempel-sats WHERE returnerar till exempel användarberättelser som är aktiva och som har tilldelats dig.

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

Du kan styra i vilken ordning logiska operatorer utvärderas genom att omsluta dem inom parenteser för att gruppera filtervillkoren. Om du till exempel vill returnera arbetsobjekt som antingen har tilldelats dig eller som du har stängt ändrar du frågefiltret så att det matchar följande exempel.

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

Filtervillkor

Varje filtervillkor består av tre delar, som var och en måste följa följande regler:

  • Fält: Du kan ange antingen referensnamnet eller det egna namnet. Följande exempel är giltig WIQL-syntax:
    • Referensnamn: SELECT [System.AssignedTo] ...
    • Eget namn med blanksteg: SELECT [Assigned To] ...
    • Namn utan blanksteg kräver inte hakparenteser: SELECT ID, Title ...
  • Operator: Giltiga värden anges i avsnittet Operatorer senare i den här artikeln.
  • Fältvärde: Du kan ange något av följande tre värden beroende på vilket fält som anges.
    • Ett literalvärde måste matcha datatypen för fältvärdet.
    • En *variabel eller ett makro som anger ett visst värde. Till exempel anger @Me den person som kör frågan. Mer information finns i Makron och variabler senare i den här artikeln.
    • Namnet på ett annat fält. Du kan till exempel använda [Assigned to] = [Changed by] för att hitta arbetsobjekt som har tilldelats till den person som senast ändrade arbetsobjektet.

En beskrivning och referensnamn för alla systemdefinierade fält finns i Index för arbetsobjektfält.

Operatorer

Frågor använder logiska uttryck för att kvalificera resultatuppsättningar. Dessa logiska uttryck bildas av en eller flera sammanslutna åtgärder.

Några enkla frågeåtgärder visas nedan.

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

Tabellen nedan sammanfattar alla operatorer som stöds för olika fälttyper. Mer information om varje fälttyp finns i Fält och attribut för arbetsobjekt.

Operatorerna =, <>, >, <, >=, and <= fungerar som förväntat. Till exempel System.ID > 100 frågor för alla arbetsobjekt med ett ID som är större än 100. System.ChangedDate > '01-01-19 12:00:00' frågor för alla arbetsobjekt som ändrats efter kl. 12.00 den 1 januari 2019.

Utöver dessa grundläggande operatorer finns det vissa beteenden och operatorer som är specifika för vissa fälttyper.

Kommentar

Vilka operatorer som är tillgängliga för dig beror på din plattform och version. Mer information finns i Snabbreferens för frågor.

Fälttyp

Operatorer som stöds

Booleskt

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

Datum/tid

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

Double, GUID, Heltal

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

Identitet

= , <> , > , < , >= , <= , =[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

Logiska grupper

Du kan använda termerna AND och OR i typisk boolesk mening för att utvärdera två satser. Du kan använda termerna AND EVER och OR EVER när du anger en WAS EVER operator. Du kan gruppera logiska uttryck och ytterligare förena dem efter behov. Exempel visas nedan.

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>'
        )
    )

Du kan negera operatorerna contains, under, och in med hjälp notav . Du kan inte negera operatorn ever . Exemplet nedan frågar efter alla arbetsobjekt som inte har tilldelats under underträdet Fabrikam Fiber\Account Managementi .

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

Exempelfråga, har någonsin tilldelats till

Följande Power Query-redigeraren exempel hittar alla arbetsobjekt som någonsin har tilldelats Till Jamal Hartnett.

Skärmbild av Power Query-redigeraren, flat listfråga, någonsin har tilldelats.

Och här är motsvarande WIQL-syntax.

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>'

Makron eller variabler

I följande tabell visas de makron eller variabler som du kan använda i en WIQL-fråga.

Makro Användning
@Me Använd den här variabeln för att automatiskt söka efter den aktuella användarens alias i ett fält som innehåller användaralias. Du kan till exempel hitta arbetsobjekt som du öppnade om du anger kolumnen Fält till Aktiverad av, kolumnen Operator till =och kolumnen Värde till @Me.
@CurrentIteration Använd den här variabeln för att automatiskt filtrera efter arbetsobjekt som tilldelats den aktuella sprinten för det valda teamet baserat på den valda teamkontexten.
@Project Använd den här variabeln för att söka efter arbetsobjekt i det aktuella projektet. Du kan till exempel hitta alla arbetsobjekt i det aktuella projektet om du ställer in kolumnen FältTeam Project, kolumnen Operator till =och kolumnen Värde till @Project.
@StartOfDay
@StartOfWeek
@StartOfMonth
@StartOfYear
Använd dessa makron för att filtrera DateTime-fält baserat på början av aktuell dag, vecka, månad, år eller en förskjutning till något av dessa värden. Du kan till exempel hitta alla objekt som skapats under de senaste 3 månaderna om du anger kolumnen Fält till Skapad datum, kolumnen Operator till> =och kolumnen Värde till @StartOfMonth – 3.
@Today Använd den här variabeln för att söka efter arbetsobjekt som är relaterade till det aktuella datumet eller till ett tidigare datum. Du kan också ändra variabeln @Today genom att subtrahera dagar. Du kan till exempel hitta alla objekt som har aktiverats under den senaste veckan om du anger kolumnen Fält till Aktiverat datum, kolumnen Operator till> =och kolumnen Värde till @Today – 7.
[Alla] Använd den här variabeln för att söka efter arbetsobjekt som är relaterade till alla värden som har definierats för ett visst fält.

@me Makro

Makrot @me ersätter windowsintegrerade kontonamnet för den användare som kör frågan. Exemplet nedan visar hur du använder makrot och motsvarande statiska uttryck. Makrot är avsett för användning med identitetsfält som Assigned To.

WHERE  
   [System.AssignedTo] = @Me 

@today Makro

Du kan använda makrot @today med valfritt DateTime-fält . Det här makrot ersätter midnatt för det aktuella datumet på den lokala dator som kör frågan. Du kan också ange @today+x eller @today-y använda heltalsförskjutningar för x dagar efter @today respektive y dagar före @today. En fråga som använder makrot @today kan returnera olika resultatuppsättningar beroende på vilken tidszon det körs i.

Exemplen nedan förutsätter att dagens datum är 1/3/19.

WHERE  
   [System.CreatedDate] = @today

Motsvarar:

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

och

WHERE  
   [System.CreatedDate] > @today-2

Motsvarar:

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

@StartOfDay, @StartOfWeek, @StartOfMonth, @StartOfYear makron

Du kan använda makrona @StartOf... med valfritt DateTime-fält . Det här makrot ersätter midnatt för den aktuella dagen, början av veckan, början av månaden eller början av året på den lokala dator som kör frågan.

Kommentar

Kräver Azure DevOps Server 2019 Update 1 eller senare version.

Dessa makron accepterar en modifierarsträng som har formatet (+/-)nn(y|M|w|d|h|m). På samma sätt som makrot @Today kan du ange plus- eller minus heltalsförskjutningar. Om tidsenhetskvalificeraren utelämnas används funktionens naturliga period som standard. Är till exempel @StartOfWeek("+1") samma som @StartOfWeek("+1w"). Om plus-/minustecknet (+/-) utelämnas antas plustecknet.

Med den här syntaxen kan du kapsla modifierare och förskjuta frågan två gånger. Satsen Closed Date >= @StartOfYear - 1filtrerar till exempel arbetsobjekt som har stängts sedan förra året. Genom att ändra den till Closed Date >= @StartOfYear('+3M') - 1exkluderar den arbetsobjekt som stängts under de första tre månaderna av det senaste året. WIQL-syntaxen visas i följande exempel.

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

I följande exempel förutsätts att dagens datum är 19-04-05.

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

Motsvarar:


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

och

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

Motsvarar:

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

Anpassade makron

WIQL stöder också godtyckliga anpassade makron. Alla strängar som föregås av ett @ behandlas som ett anpassat makro och ersätts. Ersättningsvärdet för det anpassade makrot hämtas från kontextparametern för frågemetoden i objektmodellen. Följande metod är det API som används för makron:

public WorkItemCollection Query(string wiql, IDictionary context)

Kontextparametern innehåller nyckel/värde-par för makron. Om kontexten till exempel innehåller ett nyckel/värde-par (projekt, MyProject) ersätts @project av MyProject i WIQL. Den här ersättningen är hur frågeverktyget för arbetsobjekt hanterar det @project makrot i Visual Studio.

Ange historiska frågor (ASOF)

Du kan använda en ASOF sats i en fråga för att filtrera efter arbetsobjekt som uppfyller de angivna filtervillkoren som de definierades vid ett visst datum och en viss tid.

Kommentar

Du kan inte skapa ASOF frågor i frågeverktyget i Visual Studio. Om du skapar en frågefil (.wiq) som innehåller en ASOF sats och sedan läser in den ASOF i Visual Studio ignoreras satsen.

Anta att ett arbetsobjekt klassificerades under en iterationssökvägFabrikam Fiber\Release 1 för och tilldelades till "Jamal Hartnett" före 2022-05-05. Arbetsobjektet tilldelades dock nyligen till "Raisa Pokrovskaya" och flyttades till en ny iterationssökväg i version 2. Följande exempelfråga returnerar arbetsobjekt som tilldelats Jamal Hartnett eftersom frågan baseras på tillståndet för arbetsobjekt från och med ett tidigare datum och en tidigare tid.

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'

Kommentar

Om ingen tid har angetts använder WIQL midnatt. Om ingen tidszon har angetts använder WIQL tidszonen för den lokala klientdatorn.

Ange sorteringsordningen (ORDER BY)

Du kan använda ORDER BY -satsen för att sortera resultatet av en fråga efter ett eller flera fält i stigande eller fallande ordning.

Kommentar

Sorteringsinställningarna för SQL-servern på datanivån avgör standardsorteringsordningen. Du kan dock använda parametrarna asc eller desc för att välja en explicit sorteringsordning.

I följande exempel sorteras arbetsobjekt först efter Prioritet i stigande ordning (standard) och sedan efter Skapat datum i fallande ordning (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

Om du vill returnera länkar mellan arbetsobjekt anger FROM WorkItemLinksdu . Filtervillkor i WHERE -satsen kan gälla för länkarna eller för alla arbetsobjekt som är källan eller målet för en länk. Följande fråga returnerar till exempel länkarna mellan Produktpost för kvarvarande uppgifter och deras aktiva underordnade objekt.

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)

I följande tabell sammanfattas skillnaderna mellan arbetsobjektsfrågor och frågor för länkar mellan arbetsobjekt.

Klausul

Arbetsobjekt

Länkar mellan arbetsobjekt

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

inte tillämpligt

Ange något av följande:

  • MODE (MustContain): (Standard) Returnerar endast WorkItemLinkInfo-poster där kriterierna för källa, mål och länk uppfylls.
  • MODE (MayContain): Returnerar WorkItemLinkInfo-poster för alla arbetsobjekt som uppfyller käll- och länkvillkoren, även om inget länkat arbetsobjekt uppfyller målkriterierna.
  • MODE (DoesNotContain): Returnerar WorkItemLinkInfo-poster för alla arbetsobjekt som uppfyller källan, endast om ingen länkad arbetsuppgift uppfyller länken och målvillkoren.
  • MODE (Recursive): Använd för trädfrågor([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'). Länktypen måste vara trädtopologi och framåtriktad. Returnerar WorkItemLinkInfo-poster för alla arbetsobjekt som uppfyller källan rekursivt för målet. ORDER BY och ASOF är inte kompatibla med trädfrågor.

RETURNS

Du kan ange något av följande systemlänktypnamn.

Du kan ange ett av systemlänktypnamnen, som anges nedan, eller en anpassad länktyp som du har definierat med den lokala XML-processen.

  • System.LinkTypes.Hierarchy-Forward
  • System.LinkTypes.Related
  • System.LinkTypes.Dependency-Predecessor
  • System.LinkTypes.Dependency-Successor
  • Microsoft.VSTS.Common.Affects-Forward (CMMI-process)

Mer information finns i Referens för länktyp.

Frågeexempel för trädtyp

Följande fråga returnerar alla typer av arbetsobjekt som definieras i det aktuella projektet. Frågan som visas i Power Query-redigeraren visas som i följande bild.

Skärmbild av Power Query-redigeraren, trädfråga, alla arbetsobjekt och tillstånd.

Motsvarande WIQL-syntax visas nedan.

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)


Följande fråga returnerar alla typer av arbetsobjekt som definieras i det aktuella projektet. Frågan som visas i Power Query-redigeraren visas som i följande bild.

Skärmbild av Power Query-redigeraren, direktlänkfråga, alla arbetsobjekt och tillstånd.

Motsvarande WIQL-syntax är som det visas.

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)

Fler frågeexempel

I följande typiska WIQL-frågeexempel används referensnamn för fälten. Frågan väljer arbetsobjekt (ingen typ av arbetsobjekt har angetts) med prioritet =1. Frågan returnerar ID och Rubrik för returuppsättningen som kolumner. Resultaten sorteras efter ID i stigande ordning.

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

Datum-tid-mönster

Du anger datum-tid-mönstret enligt ett av två mönster:

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

Exempelsatser

Följande exempelinstruktioner visar specifika kvalificerande satser.

Klausul

Exempel

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 (Tidsfilter)

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

Sträng och oformaterad text

Citatsträngliteraler (enkla eller dubbla citattecken stöds) i en jämförelse med ett sträng- eller oformaterad textfält. Strängliteraler stöder alla Unicode-tecken.

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

Du kan använda contains-operatorn för att söka efter en delsträng var som helst i fältvärdet.

WHERE [System.Description] contains 'WIQL' 

Område och iteration (TreePath)

Du kan använda operatorn UNDER för fälten Område och Iteration Path. Operatorn UNDER utvärderar om ett värde ligger inom underträdet för en specifik klassificeringsnod. Uttrycket nedan skulle till exempel utvärderas till sant om områdessökvägen var "MyProject\Server\Administration", "MyProject\Server\Administration\Feature 1", "MyProject\Server\Administration\Feature 2\SubFeature 5" eller någon annan nod i underträdet.

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

Modifierare och särskilda operatorer

Du kan använda vissa modifierare och särskilda operatorer i ett frågeuttryck.

Använd operatorn IN för att utvärdera om ett fältvärde är lika med någon av en uppsättning värden. Den här operatorn stöds för fälttyperna String, Integer, Double och DateTime. Se följande exempel tillsammans med dess semantiska motsvarighet.

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>'
    )

Operatorn EVER används för att utvärdera om ett fältvärde är lika med eller någonsin har motsvarat ett visst värde under alla tidigare revisioner av arbetsobjekt. Fälttyperna String, Integer, Double och DateTime stöder den här operatorn. Det finns alternativa syntaxer för operatorn EVER . Kodfragmenten nedan frågar till exempel om alla arbetsobjekt någonsin har tilldelats Jamal, Raise eller 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>'
    )