我如何获得使用SQL连接到XML API的值列表?

我们在非营利组织中使用了一个云供应商数据库,但是它有一个XML API,可以让我们与GUI之外的数据库进行交互。 所提供的文档中的用例都是关于将数据库与我们的网站集成在一起,但是我想用它来自动化重复的,耗时的报表。

我发现我可以将SQL语句放入连接URL来提取我们需要的数字,但是我必须连接并检索报表中每个单元格的信息,一次只拖动一个数值,所以需要一段时间。 我正在使用启用macros的电子表格和VBA运行一堆这些API调用并将结果插入到单元格中。 有没有办法来检索一个XML文档,将包含所有的值,我可以只是迭代呢? 我想这是所有的API调用和等待时间,这是放慢了下来。

这是一个连接string的例子,省略了login和通行证:

https://www.donorperfect.net/prod/xmlrequest.asp?login=*****&pass=*****&action= SELECT SUM(dpgift.amount) from dpgift INNER JOIN dpgiftudf ON dpgift.gift_id=dpgiftudf.gift_id WHERE dpgiftudf.bu2_category = '01WEB' AND dpgift.record_type = 'G' AND dpgift.gift_date BETWEEN '3/1/2017' AND '3/31/2017' 

只是在URL中的SQL是:

 SELECT SUM(dpgift.amount) from dpgift INNER JOIN dpgiftudf ON dpgift.gift_id=dpgiftudf.gift_id WHERE dpgiftudf.bu2_category = '01WEB' AND dpgift.record_type = 'G' AND dpgift.gift_date BETWEEN '3/1/2017' AND '3/31/2017' 

结果如下:

 <result><record><field name="" id="" value="2995"/></record></result> 

报告中的每个单元格都必须这样做,并且有大约500个单元格。

我想拉它,所以得到的XML会给我所有的bu2_category代码的date范围内的所有值,而不会分别调用每个单独的值(例如一个奇特的SQL查询,给我一个单一的XML文档以及在此期间的所有字段和值)。

任何人都可以提出一个更好的SQL语句,我可以尝试? 我是SQL和XML的新手。

考虑删除bu2_category上的WHERE条件, 并按类别添加GROUP BY子句。 然后这将为每个不同类别的金额总和。

 SELECT dpgift.bu2_category, SUM(dpgift.amount) AS SumAmount FROM dpgift INNER JOIN dpgiftudf ON dpgift.gift_id=dpgiftudf.gift_id WHERE dpgift.record_type = 'G' AND dpgift.gift_date BETWEEN '3/1/2017' AND '3/31/2017' GROUP BY dpgift.bu2_category