{"id":46215,"date":"2026-09-21T18:16:04","date_gmt":"2026-09-21T12:46:04","guid":{"rendered":"https:\/\/www.inogic.com\/blog\/?p=46215"},"modified":"2026-09-21T18:27:27","modified_gmt":"2026-09-21T12:57:27","slug":"sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql","status":"publish","type":"post","link":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/","title":{"rendered":"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL"},"content":{"rendered":"<p><img decoding=\"async\" class=\"alignnone size-full wp-image-46241\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/SQL-Meets-Dataverse-Web-API-Query-Microsoft-Dataverse-Data-Using-SQL-1-scaled.png\" alt=\"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL\" width=\"2560\" height=\"1463\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/SQL-Meets-Dataverse-Web-API-Query-Microsoft-Dataverse-Data-Using-SQL-1-scaled.png 2560w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/SQL-Meets-Dataverse-Web-API-Query-Microsoft-Dataverse-Data-Using-SQL-1-300x171.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/SQL-Meets-Dataverse-Web-API-Query-Microsoft-Dataverse-Data-Using-SQL-1-1024x585.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/SQL-Meets-Dataverse-Web-API-Query-Microsoft-Dataverse-Data-Using-SQL-1-768x439.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/SQL-Meets-Dataverse-Web-API-Query-Microsoft-Dataverse-Data-Using-SQL-1-1536x878.png 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/SQL-Meets-Dataverse-Web-API-Query-Microsoft-Dataverse-Data-Using-SQL-1-2048x1170.png 2048w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/SQL-Meets-Dataverse-Web-API-Query-Microsoft-Dataverse-Data-Using-SQL-1-660x377.png 660w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p>Microsoft Dataverse provides several ways to retrieve data, including\u00a0 <strong>OData and FetchXML<\/strong>. While these approaches are well suited to Dataverse, developers coming from a relational database background may naturally think in terms of SQL.<\/p>\n<p>In this article, we will look at how Dataverse data querying traditionally works, what SQL querying through the Web API introduces, how it changes the developer experience, and where this approach can be useful.<\/p>\n<p><strong>Previously: Querying Dataverse Data<\/strong><\/p>\n<p>Below are the examples of the how developers are retrieving the data from the Dataverse using the <strong>OData Query<\/strong> and <strong>FetchXML<\/strong><\/p>\n<p><strong>OData Query: <\/strong><\/p>\n<pre class=\"lang:css gutter:true start:1\"> GET \/api\/data\/v9.2\/accounts?$select=name, telephone1&amp;$filter=statecode eq 0<\/pre>\n<p><strong>FetchXML:<\/strong><\/p>\n<pre class=\"lang:css gutter:true start:1\">&lt;fetch&gt;\r\n\r\n&lt;entity name=\"account\"&gt;\r\n\r\n&lt;attribute name=\"name\" \/&gt;\r\n\r\n&lt;attribute name=\"telephone1\" \/&gt;\r\n\r\n&lt;filter&gt;\r\n\r\n&lt;condition attribute=\"statecode\"\r\n\r\noperator=\"eq\"\r\n\r\nvalue=\"0\" \/&gt;\r\n\r\n&lt;\/filter&gt;\r\n\r\n&lt;\/entity&gt;\r\n\r\n&lt;\/fetch&gt;<\/pre>\n<p><strong>Now: SQL Querying Through the Dataverse Web API<\/strong><\/p>\n<p>With SQL querying through the Dataverse Web API, developers can pass supported SQL SELECT statements through the <strong>sql <\/strong>query option of a Dataverse Web API entity set. Dataverse processes the supported SQL syntax and returns the results as JSON.<\/p>\n<p>For example, an Account query can be written using familiar <strong>SQL syntax<\/strong>:<\/p>\n<p>SELECT name, telephone1, websiteurl<\/p>\n<p>FROM account<\/p>\n<p>The query can then be sent through the Dataverse Web API:<\/p>\n<p>GET https:\/\/&lt;organization&gt;.crm.dynamics.com\/api\/data\/v9.2\/accounts?<strong>sql=&lt;encoded<\/strong><strong> SQL query&gt;<\/strong><\/p>\n<p>Here, you can think how to encode the <strong>SQL query, <\/strong>but not to worry when the query sent through the Dataverse Web API then <strong>SQL query<\/strong> is automatically encoded, check the below image.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-46216\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-1.png\" alt=\"Query Microsoft Dataverse Data Using SQL\" width=\"1173\" height=\"117\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-1.png 1173w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-1-300x30.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-1-1024x102.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-1-768x77.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-1-660x66.png 660w\" sizes=\"(max-width: 1173px) 100vw, 1173px\" \/><\/p>\n<p><strong>Hands-On Demonstration<\/strong><\/p>\n<p>In this section, we will demonstrate how supported SQL queries can be executed against Microsoft Dataverse through the Web API. The perquisite is you should be login to your environment, and you require any OOB \/ Custom entities for executing your SQL queries for retrieving the data.<br \/>\nBut before writing the SQL queries you should check the below mentioned table.<\/p>\n<p><strong>Note:<\/strong> Dataverse Support Only Below listed SQL Features.<\/p>\n<table width=\"664\">\n<tbody>\n<tr>\n<td width=\"193\"><strong>Feature<\/strong><\/td>\n<td width=\"471\"><strong>Supported syntax<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"193\"><strong>Select<\/strong><\/td>\n<td width=\"471\">SELECT, SELECT DISTINCT, SELECT TOP N (0\u20135000)<\/td>\n<\/tr>\n<tr>\n<td width=\"193\"><strong>Joins<\/strong><\/td>\n<td width=\"471\">INNER JOIN, LEFT JOIN (multi-table)<\/td>\n<\/tr>\n<tr>\n<td width=\"193\"><strong>Filtering<\/strong><\/td>\n<td width=\"471\">WHERE with =, !=, &gt;, &lt;, &gt;=, &lt;=, LIKE, IN, NOT IN, IS NULL, IS NOT NULL, BETWEEN, AND, OR, nested parentheses<\/td>\n<\/tr>\n<tr>\n<td width=\"193\"><strong>Grouping and aggregation<\/strong><\/td>\n<td width=\"471\">GROUP BY, COUNT(*), SUM(), AVG(), MIN(), MAX()<\/td>\n<\/tr>\n<tr>\n<td width=\"193\"><strong>Sorting and paging<\/strong><\/td>\n<td width=\"471\">ORDER BY [ASC\\|DESC], OFFSET n ROWS FETCH NEXT m ROWS ONLY<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><em>Table: Supported SQL Feature<\/em><\/p>\n<p>For the demonstration of the writing of the SQL queries we are directly writing the SQL queries in the <strong>sql\u00a0 <\/strong>query parameter in the URL, which is provided by the Dataverse Web Api. Below is the Example.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-46217\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-2.png\" alt=\"Query Microsoft Dataverse Data Using SQL\" width=\"1439\" height=\"88\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-2.png 1439w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-2-300x18.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-2-1024x63.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-2-768x47.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-2-660x40.png 660w\" sizes=\"(max-width: 1439px) 100vw, 1439px\" \/> <strong>Basic Select Query<\/strong> Retrieve selected columns from the Dataverse Account table using SQL through the Web API. <strong>Sql Query \/ Request:<\/strong> SELECT name, telephone1, websiteurl FROM account <img decoding=\"async\" class=\"alignnone size-full wp-image-46218\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-3.png\" alt=\"Query Microsoft Dataverse Data Using SQL\" width=\"837\" height=\"45\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-3.png 837w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-3-300x16.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-3-768x41.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-3-660x35.png 660w\" sizes=\"(max-width: 837px) 100vw, 837px\" \/> <img decoding=\"async\" class=\"alignnone size-full wp-image-46219\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-4.png\" alt=\"Query Microsoft Dataverse Data Using SQL\" width=\"1170\" height=\"131\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-4.png 1170w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-4-300x34.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-4-1024x115.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-4-768x86.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-4-660x74.png 660w\" sizes=\"(max-width: 1170px) 100vw, 1170px\" \/> <strong>Output \/ Response:<\/strong> <img decoding=\"async\" class=\"alignnone size-full wp-image-46220\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-5.png\" alt=\"Query Microsoft Dataverse Data Using SQL\" width=\"1097\" height=\"90\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-5.png 1097w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-5-300x25.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-5-1024x84.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-5-768x63.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-5-660x54.png 660w\" sizes=\"(max-width: 1097px) 100vw, 1097px\" \/> <img decoding=\"async\" class=\"alignnone size-full wp-image-46221\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-6.png\" alt=\"Query Microsoft Dataverse Data Using SQL\" width=\"958\" height=\"519\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-6.png 958w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-6-300x163.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-6-768x416.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-6-660x358.png 660w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/> <em>Figure : Retrieving selected Account columns using SQL through the Dataverse Web API.<\/em><\/p>\n<p><strong>INNER JOIN \u2013 Account + Contact<\/strong><\/p>\n<p>Retrieve Account information together with its related Contacts.<\/p>\n<p><strong>Sql Query \/ Request:<\/strong><\/p>\n<pre class=\"lang:css gutter:true start:1\">SELECT\r\n\r\na.name AS account_name,\r\n\r\nc.fullname AS contact_name,\r\n\r\nc.emailaddress1\r\n\r\nFROM account AS a\r\n\r\nINNER JOIN contact AS c\r\n\r\nON a.accountid = c.parentcustomerid<\/pre>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-46222\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-7.png\" alt=\"Query Microsoft Dataverse Data Using SQL\" width=\"1085\" height=\"38\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-7.png 1085w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-7-300x11.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-7-1024x36.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-7-768x27.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-7-660x23.png 660w\" sizes=\"(max-width: 1085px) 100vw, 1085px\" \/> <img decoding=\"async\" class=\"alignnone size-full wp-image-46223\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-8.png\" alt=\"Query Microsoft Dataverse Data Using SQL\" width=\"1169\" height=\"160\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-8.png 1169w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-8-300x41.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-8-1024x140.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-8-768x105.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-8-660x90.png 660w\" sizes=\"(max-width: 1169px) 100vw, 1169px\" \/> <strong>Output \/ Respone:<\/strong> <img decoding=\"async\" class=\"alignnone size-full wp-image-46224\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-9.png\" alt=\"Query Microsoft Dataverse Data Using SQL\" width=\"1085\" height=\"71\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-9.png 1085w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-9-300x20.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-9-1024x67.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-9-768x50.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-9-660x43.png 660w\" sizes=\"(max-width: 1085px) 100vw, 1085px\" \/> <img decoding=\"async\" class=\"alignnone size-full wp-image-46225\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-10.png\" alt=\"Query Microsoft Dataverse Data Using SQL\" width=\"805\" height=\"468\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-10.png 805w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-10-300x174.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-10-768x446.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-10-660x384.png 660w\" sizes=\"(max-width: 805px) 100vw, 805px\" \/><\/p>\n<p><em>Figure : Retrieving Account Information Together with its related contacts.<\/em><\/p>\n<h3><strong>GROUP BY + COUNT<\/strong><\/h3>\n<p>Determine how many Contacts are associated with each Account.<\/p>\n<p><strong>Sql Query \/ Request: <\/strong><\/p>\n<pre class=\"lang:css gutter:true start:1\">SELECT\r\n\r\na.name,\r\n\r\nCOUNT(*) AS contact_count\r\n\r\nFROM account AS a\r\n\r\nINNER JOIN contact AS c\r\n\r\nON a.accountid = c.parentcustomerid\r\n\r\nGROUP BY a.name\r\n\r\nORDER BY a.name<\/pre>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-46226\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-11.png\" alt=\"Query Microsoft Dataverse Data Using SQL\" width=\"1078\" height=\"41\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-11.png 1078w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-11-300x11.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-11-1024x39.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-11-768x29.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-11-660x25.png 660w\" sizes=\"(max-width: 1078px) 100vw, 1078px\" \/><img decoding=\"async\" class=\"alignnone size-full wp-image-46227\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-12.png\" alt=\"Query Microsoft Dataverse Data Using SQL\" width=\"1165\" height=\"220\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-12.png 1165w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-12-300x57.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-12-1024x193.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-12-768x145.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-12-660x125.png 660w\" sizes=\"(max-width: 1165px) 100vw, 1165px\" \/> <strong>Output \/ Respone:<\/strong> <img decoding=\"async\" class=\"alignnone size-full wp-image-46228\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-13.png\" alt=\"Query Microsoft Dataverse Data Using SQL\" width=\"772\" height=\"282\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-13.png 772w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-13-300x110.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-13-768x281.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-13-660x241.png 660w\" sizes=\"(max-width: 772px) 100vw, 772px\" \/><\/p>\n<p><em>Figure : <\/em><em>Determine how many Contacts are associated with each Account.<\/em><\/p>\n<pre class=\"lang:css gutter:true start:1\">ORDER BY \u2013 Sorting Results\r\n\r\nHere we demonstrate sorting by name on the account entity.\r\n\r\n<strong>Sql Query \/ Request:<\/strong>\r\n\r\nSELECT\r\n\r\nname,\r\n\r\ntelephone1\r\n\r\nFROM account\r\n\r\nORDER BY name ASC<\/pre>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-46229\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-14.png\" alt=\"Query Microsoft Dataverse Data Using SQL\" width=\"949\" height=\"38\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-14.png 949w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-14-300x12.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-14-768x31.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-14-660x26.png 660w\" sizes=\"(max-width: 949px) 100vw, 949px\" \/> <img decoding=\"async\" class=\"alignnone size-full wp-image-46230\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-15.png\" alt=\"Query Microsoft Dataverse Data Using SQL\" width=\"1169\" height=\"203\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-15.png 1169w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-15-300x52.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-15-1024x178.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-15-768x133.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-15-660x115.png 660w\" sizes=\"(max-width: 1169px) 100vw, 1169px\" \/> <strong>Output \/ Respone:<\/strong> <img decoding=\"async\" class=\"alignnone size-full wp-image-46231\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-16.png\" alt=\"Query Microsoft Dataverse Data Using SQL\" width=\"1036\" height=\"423\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-16.png 1036w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-16-300x122.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-16-1024x418.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-16-768x314.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/Query-Microsoft-Dataverse-Data-Using-SQL-16-660x269.png 660w\" sizes=\"(max-width: 1036px) 100vw, 1036px\" \/> <em>Figure : <\/em><em>Sorting Account records using ORDER BY.<\/em><em>\u00a0<\/em><\/p>\n<h3><strong>Limitation \/ Unsupported SQL Features<\/strong><\/h3>\n<table width=\"664\">\n<tbody>\n<tr>\n<td width=\"129\"><strong>Unsupported Feature<\/strong><\/td>\n<td width=\"208\"><strong>Example<\/strong><\/td>\n<td width=\"327\"><strong>Alternative \/ Recommendation<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"129\"><strong>SELECT *<\/strong><\/td>\n<td width=\"208\">SELECT * FROM account<\/td>\n<td width=\"327\">Explicitly specify the columns you need<\/td>\n<\/tr>\n<tr>\n<td width=\"129\"><strong>Subqueries<\/strong><\/td>\n<td width=\"208\">WHERE accountid IN (SELECT &#8230;)<\/td>\n<td width=\"327\">Use supported JOIN operations or separate queries<\/td>\n<\/tr>\n<tr>\n<td width=\"129\"><strong>CTEs<\/strong><\/td>\n<td width=\"208\">WITH Accounts AS (&#8230;)<\/td>\n<td width=\"327\">Rewrite using supported SELECT and JOIN syntax<\/td>\n<\/tr>\n<tr>\n<td width=\"129\"><strong>HAVING<\/strong><\/td>\n<td width=\"208\">HAVING COUNT(*) &gt; 5<\/td>\n<td width=\"327\">Apply filtering using WHERE before aggregation<\/td>\n<\/tr>\n<tr>\n<td width=\"129\"><strong>UNION<\/strong><\/td>\n<td width=\"208\">SELECT &#8230; UNION SELECT &#8230;<\/td>\n<td width=\"327\">Execute separate supported queries<\/td>\n<\/tr>\n<tr>\n<td width=\"129\"><strong>RIGHT JOIN<\/strong><\/td>\n<td width=\"208\">RIGHT JOIN contact &#8230;<\/td>\n<td width=\"327\">Use LEFT JOIN by changing the query direction where appropriate<\/td>\n<\/tr>\n<tr>\n<td width=\"129\"><strong>FULL JOIN<\/strong><\/td>\n<td width=\"208\">FULL JOIN &#8230;<\/td>\n<td width=\"327\">Use separate queries or supported joins<\/td>\n<\/tr>\n<tr>\n<td width=\"129\"><strong>CROSS JOIN<\/strong><\/td>\n<td width=\"208\">CROSS JOIN &#8230;<\/td>\n<td width=\"327\">Redesign the query using supported relationships<\/td>\n<\/tr>\n<tr>\n<td width=\"129\"><strong>CASE<\/strong><\/td>\n<td width=\"208\">CASE WHEN &#8230; END<\/td>\n<td width=\"327\">Handle conditional presentation logic in the application layer<\/td>\n<\/tr>\n<tr>\n<td width=\"129\"><strong>COALESCE<\/strong><\/td>\n<td width=\"208\">COALESCE(name, &#8216;Unknown&#8217;)<\/td>\n<td width=\"327\">Handle null values in application code<\/td>\n<\/tr>\n<tr>\n<td width=\"129\"><strong>Window functions<\/strong><\/td>\n<td width=\"208\">ROW_NUMBER(), RANK()<\/td>\n<td width=\"327\">Process the result in the application layer<\/td>\n<\/tr>\n<tr>\n<td width=\"129\"><strong>Non-SELECT statements<\/strong><\/td>\n<td width=\"208\">INSERT, UPDATE, DELETE, ALTER TABLE<\/td>\n<td width=\"327\">Use Dataverse Web API CRUD operations<\/td>\n<\/tr>\n<tr>\n<td width=\"129\"><strong>Unsupported functions<\/strong><\/td>\n<td width=\"208\">Unsupported string\/date\/math functions<\/td>\n<td width=\"327\">Use only functions documented as supported<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><em>Table : Unsupported SQL Featuers <\/em><\/p>\n<p>Although SQL querying through the Dataverse Web API provides a familiar SQL-based syntax, it is <strong>not a full SQL Server implementation<\/strong>. Dataverse supports a defined subset of SQL primarily for querying data. Developers should therefore validate the supported syntax before converting an existing SQL Server query. Features such as <strong>subqueries, CTEs, HAVING, UNION, unsupported joins, window functions, and non-SELECT statements<\/strong> are not supported.<\/p>\n<p><strong>Conclusion<\/strong><\/p>\n<p>Microsoft Dataverse provides developers with multiple ways to retrieve data through the Web API. SQL querying adds another option by allowing developers to express supported queries using familiar SQL syntax. This can be particularly useful when working with multiple related tables, filtering data, and performing aggregation-based queries.<\/p>\n<h3><strong>FAQs<\/strong><\/h3>\n<p><strong><span lang=\"EN-IN\" style=\"font-family: 'Calibri',sans-serif;\">What is SQL querying in Microsoft Dataverse?<\/span><\/strong><span lang=\"EN-IN\" style=\"font-family: 'Calibri',sans-serif;\"><br \/>\nSQL querying in Microsoft Dataverse allows developers to retrieve data using supported <strong><span style=\"font-family: 'Calibri',sans-serif;\">SQL syntax<\/span><\/strong> through the <strong><span style=\"font-family: 'Calibri',sans-serif;\">Dataverse Web API<\/span><\/strong>.<\/span><\/p>\n<p><strong><span lang=\"EN-IN\" style=\"font-family: 'Calibri',sans-serif;\">How can SQL be used with the Dataverse Web API?<\/span><\/strong><span lang=\"EN-IN\" style=\"font-family: 'Calibri',sans-serif;\"><br \/>\nDevelopers can pass supported <strong><span style=\"font-family: 'Calibri',sans-serif;\">SQL queries<\/span><\/strong> through the <strong><span style=\"font-family: 'Calibri',sans-serif;\">sql query option<\/span><\/strong> of a Dataverse Web API entity set to retrieve Dataverse data.<\/span><\/p>\n<p><strong><span lang=\"EN-IN\" style=\"font-family: 'Calibri',sans-serif;\">What SQL features are supported by Dataverse?<\/span><\/strong><span lang=\"EN-IN\" style=\"font-family: 'Calibri',sans-serif;\"><br \/>\nDataverse supports several SQL features, including <strong><span style=\"font-family: 'Calibri',sans-serif;\">SELECT, JOIN, WHERE, GROUP BY, aggregation, ORDER BY, and paging<\/span><\/strong>.<\/span><\/p>\n<p><strong><span lang=\"EN-IN\" style=\"font-family: 'Calibri',sans-serif;\">Is SQL fully supported in the Dataverse Web API?<\/span><\/strong><span lang=\"EN-IN\" style=\"font-family: 'Calibri',sans-serif;\"><br \/>\nNo. The <strong><span style=\"font-family: 'Calibri',sans-serif;\">Dataverse Web API<\/span><\/strong> supports a defined subset of SQL for querying data and does not provide full SQL Server functionality.<\/span><\/p>\n<p><strong><span lang=\"EN-IN\" style=\"font-family: 'Calibri',sans-serif;\">When can SQL querying be useful in Dataverse?<\/span><\/strong><span lang=\"EN-IN\" style=\"font-family: 'Calibri',sans-serif;\"><br \/>\nSQL querying can be useful when developers want to retrieve and work with <strong><span style=\"font-family: 'Calibri',sans-serif;\">Dataverse data<\/span><\/strong> using familiar <strong><span style=\"font-family: 'Calibri',sans-serif;\">SQL syntax<\/span><\/strong>, particularly for related data, filtering, and aggregation.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Microsoft Dataverse provides several ways to retrieve data, including\u00a0 OData and FetchXML. While these approaches are well suited to Dataverse, developers coming from a relational database background may naturally think in terms of SQL. In this article, we will look at how Dataverse data querying traditionally works, what SQL querying through the Web API introduces,\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/\">Read More: SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using\u2026 &raquo;<\/a><\/span><\/p>\n","protected":false},"author":15,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2354,2361],"tags":[3430],"class_list":["post-46215","post","type-post","status-publish","format-standard","hentry","category-dataverse","category-technical","tag-sql-meets-dataverse-web-api"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Microsoft Dataverse provides several ways to retrieve data, including OData and FetchXML. While these approaches are well suited to Dataverse, developers coming from a relational database background may naturally think in terms of SQL. In this article, we will look at how Dataverse data querying traditionally works, what SQL querying through the Web API introduces,\" \/>\n\t<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"Sam Kumar\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Microsoft Dynamics 365 CRM Tips and Tricks - By Inogic\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL - Microsoft Dynamics 365 CRM Tips and Tricks\" \/>\n\t\t<meta property=\"og:description\" content=\"Microsoft Dataverse provides several ways to retrieve data, including OData and FetchXML. While these approaches are well suited to Dataverse, developers coming from a relational database background may naturally think in terms of SQL. In this article, we will look at how Dataverse data querying traditionally works, what SQL querying through the Web API introduces,\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/SQL-Meets-Dataverse-Web-API-Query-Microsoft-Dataverse-Data-Using-SQL-1-scaled.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/SQL-Meets-Dataverse-Web-API-Query-Microsoft-Dataverse-Data-Using-SQL-1-scaled.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-09-21T12:46:04+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-09-21T12:57:27+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inogicindia\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@inogic\" \/>\n\t\t<meta name=\"twitter:title\" content=\"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL - Microsoft Dynamics 365 CRM Tips and Tricks\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Microsoft Dataverse provides several ways to retrieve data, including OData and FetchXML. While these approaches are well suited to Dataverse, developers coming from a relational database background may naturally think in terms of SQL. In this article, we will look at how Dataverse data querying traditionally works, what SQL querying through the Web API introduces,\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@inogic\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/SQL-Meets-Dataverse-Web-API-Query-Microsoft-Dataverse-Data-Using-SQL-1-scaled.png\" \/>\n\t\t<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t\t<meta name=\"twitter:data1\" content=\"Sam Kumar\" \/>\n\t\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/2026\\\/09\\\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\\\/#blogposting\",\"name\":\"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL - Microsoft Dynamics 365 CRM Tips and Tricks\",\"headline\":\"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL\",\"author\":{\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/author\\\/sam-kumar\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/SQL-Meets-Dataverse-Web-API-Query-Microsoft-Dataverse-Data-Using-SQL-1.png\",\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/2026\\\/09\\\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\\\/#articleImage\"},\"datePublished\":\"2026-09-21T18:16:04+05:30\",\"dateModified\":\"2026-09-21T18:27:27+05:30\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/2026\\\/09\\\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/2026\\\/09\\\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\\\/#webpage\"},\"articleSection\":\"Dataverse, Technical, SQL Meets Dataverse Web API\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/2026\\\/09\\\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inogic.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/category\\\/dataverse\\\/#listItem\",\"name\":\"Dataverse\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/category\\\/dataverse\\\/#listItem\",\"position\":2,\"name\":\"Dataverse\",\"item\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/category\\\/dataverse\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/2026\\\/09\\\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\\\/#listItem\",\"name\":\"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/2026\\\/09\\\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\\\/#listItem\",\"position\":3,\"name\":\"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/category\\\/dataverse\\\/#listItem\",\"name\":\"Dataverse\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/#organization\",\"name\":\"Microsoft Dynamics 365 CRM Tips and Tricks\",\"description\":\"By Inogic\",\"url\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/inogic-logo.png\",\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/2026\\\/09\\\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\\\/#organizationLogo\",\"width\":1000,\"height\":325,\"caption\":\"inogic logo\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/2026\\\/09\\\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inogicindia\",\"https:\\\/\\\/twitter.com\\\/inogic\",\"https:\\\/\\\/www.instagram.com\\\/inogicindia\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCM4V7ousgLSu1hbOEv4DUuQ\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inogicindia\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/author\\\/sam-kumar\\\/#author\",\"url\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/author\\\/sam-kumar\\\/\",\"name\":\"Sam Kumar\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/2026\\\/09\\\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ede4386d06665d3d5ee2ecccb6c36df60385d561e317372bd89dffb7e4b1de2f?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Sam Kumar\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/2026\\\/09\\\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\\\/#webpage\",\"url\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/2026\\\/09\\\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\\\/\",\"name\":\"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL - Microsoft Dynamics 365 CRM Tips and Tricks\",\"description\":\"Microsoft Dataverse provides several ways to retrieve data, including OData and FetchXML. While these approaches are well suited to Dataverse, developers coming from a relational database background may naturally think in terms of SQL. In this article, we will look at how Dataverse data querying traditionally works, what SQL querying through the Web API introduces,\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/2026\\\/09\\\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/author\\\/sam-kumar\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/author\\\/sam-kumar\\\/#author\"},\"datePublished\":\"2026-09-21T18:16:04+05:30\",\"dateModified\":\"2026-09-21T18:27:27+05:30\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/\",\"name\":\"Microsoft Dynamics 365 CRM Tips and Tricks\",\"alternateName\":\"Inogic\",\"description\":\"By Inogic\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inogic.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL - Microsoft Dynamics 365 CRM Tips and Tricks","description":"Microsoft Dataverse provides several ways to retrieve data, including OData and FetchXML. While these approaches are well suited to Dataverse, developers coming from a relational database background may naturally think in terms of SQL. In this article, we will look at how Dataverse data querying traditionally works, what SQL querying through the Web API introduces,","canonical_url":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/","robots":"max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/#blogposting","name":"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL - Microsoft Dynamics 365 CRM Tips and Tricks","headline":"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL","author":{"@id":"https:\/\/www.inogic.com\/blog\/author\/sam-kumar\/#author"},"publisher":{"@id":"https:\/\/www.inogic.com\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/SQL-Meets-Dataverse-Web-API-Query-Microsoft-Dataverse-Data-Using-SQL-1.png","@id":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/#articleImage"},"datePublished":"2026-09-21T18:16:04+05:30","dateModified":"2026-09-21T18:27:27+05:30","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/#webpage"},"isPartOf":{"@id":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/#webpage"},"articleSection":"Dataverse, Technical, SQL Meets Dataverse Web API"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.inogic.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.inogic.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.inogic.com\/blog\/category\/dataverse\/#listItem","name":"Dataverse"}},{"@type":"ListItem","@id":"https:\/\/www.inogic.com\/blog\/category\/dataverse\/#listItem","position":2,"name":"Dataverse","item":"https:\/\/www.inogic.com\/blog\/category\/dataverse\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/#listItem","name":"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.inogic.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/#listItem","position":3,"name":"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL","previousItem":{"@type":"ListItem","@id":"https:\/\/www.inogic.com\/blog\/category\/dataverse\/#listItem","name":"Dataverse"}}]},{"@type":"Organization","@id":"https:\/\/www.inogic.com\/blog\/#organization","name":"Microsoft Dynamics 365 CRM Tips and Tricks","description":"By Inogic","url":"https:\/\/www.inogic.com\/blog\/","logo":{"@type":"ImageObject","url":"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/02\/inogic-logo.png","@id":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/#organizationLogo","width":1000,"height":325,"caption":"inogic logo"},"image":{"@id":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/#organizationLogo"},"sameAs":["https:\/\/www.facebook.com\/inogicindia","https:\/\/twitter.com\/inogic","https:\/\/www.instagram.com\/inogicindia\/","https:\/\/www.youtube.com\/channel\/UCM4V7ousgLSu1hbOEv4DUuQ","https:\/\/www.linkedin.com\/company\/inogicindia"]},{"@type":"Person","@id":"https:\/\/www.inogic.com\/blog\/author\/sam-kumar\/#author","url":"https:\/\/www.inogic.com\/blog\/author\/sam-kumar\/","name":"Sam Kumar","image":{"@type":"ImageObject","@id":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/ede4386d06665d3d5ee2ecccb6c36df60385d561e317372bd89dffb7e4b1de2f?s=96&d=mm&r=g","width":96,"height":96,"caption":"Sam Kumar"}},{"@type":"WebPage","@id":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/#webpage","url":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/","name":"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL - Microsoft Dynamics 365 CRM Tips and Tricks","description":"Microsoft Dataverse provides several ways to retrieve data, including OData and FetchXML. While these approaches are well suited to Dataverse, developers coming from a relational database background may naturally think in terms of SQL. In this article, we will look at how Dataverse data querying traditionally works, what SQL querying through the Web API introduces,","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.inogic.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/#breadcrumblist"},"author":{"@id":"https:\/\/www.inogic.com\/blog\/author\/sam-kumar\/#author"},"creator":{"@id":"https:\/\/www.inogic.com\/blog\/author\/sam-kumar\/#author"},"datePublished":"2026-09-21T18:16:04+05:30","dateModified":"2026-09-21T18:27:27+05:30"},{"@type":"WebSite","@id":"https:\/\/www.inogic.com\/blog\/#website","url":"https:\/\/www.inogic.com\/blog\/","name":"Microsoft Dynamics 365 CRM Tips and Tricks","alternateName":"Inogic","description":"By Inogic","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.inogic.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Microsoft Dynamics 365 CRM Tips and Tricks - By Inogic","og:type":"article","og:title":"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL - Microsoft Dynamics 365 CRM Tips and Tricks","og:description":"Microsoft Dataverse provides several ways to retrieve data, including OData and FetchXML. While these approaches are well suited to Dataverse, developers coming from a relational database background may naturally think in terms of SQL. In this article, we will look at how Dataverse data querying traditionally works, what SQL querying through the Web API introduces,","og:url":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/","og:image":"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/SQL-Meets-Dataverse-Web-API-Query-Microsoft-Dataverse-Data-Using-SQL-1-scaled.png","og:image:secure_url":"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/SQL-Meets-Dataverse-Web-API-Query-Microsoft-Dataverse-Data-Using-SQL-1-scaled.png","article:published_time":"2026-09-21T12:46:04+00:00","article:modified_time":"2026-09-21T12:57:27+00:00","article:publisher":"https:\/\/www.facebook.com\/inogicindia","twitter:card":"summary_large_image","twitter:site":"@inogic","twitter:title":"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL - Microsoft Dynamics 365 CRM Tips and Tricks","twitter:description":"Microsoft Dataverse provides several ways to retrieve data, including OData and FetchXML. While these approaches are well suited to Dataverse, developers coming from a relational database background may naturally think in terms of SQL. In this article, we will look at how Dataverse data querying traditionally works, what SQL querying through the Web API introduces,","twitter:creator":"@inogic","twitter:image":"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/09\/SQL-Meets-Dataverse-Web-API-Query-Microsoft-Dataverse-Data-Using-SQL-1-scaled.png","twitter:label1":"Written by","twitter:data1":"Sam Kumar","twitter:label2":"Est. reading time","twitter:data2":"5 minutes"},"aioseo_meta_data":{"post_id":"46215","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"Microsoft Dataverse Data Using SQL","score":0,"analysis":[]},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":true,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-09-21 11:41:22","updated":"2026-09-21 13:42:04","seo_analyzer_scan_date":null,"focus_keyword":"Microsoft Dataverse Data Using SQL","additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.inogic.com\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.inogic.com\/blog\/category\/dataverse\/\" title=\"Dataverse\">Dataverse<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tSQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.inogic.com\/blog"},{"label":"Dataverse","link":"https:\/\/www.inogic.com\/blog\/category\/dataverse\/"},{"label":"SQL Meets Dataverse Web API: Query Microsoft Dataverse Data Using SQL","link":"https:\/\/www.inogic.com\/blog\/2026\/09\/sql-meets-dataverse-web-api-query-microsoft-dataverse-data-using-sql\/"}],"_links":{"self":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/46215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/comments?post=46215"}],"version-history":[{"count":5,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/46215\/revisions"}],"predecessor-version":[{"id":46244,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/46215\/revisions\/46244"}],"wp:attachment":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/media?parent=46215"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/categories?post=46215"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/tags?post=46215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}