【发布时间】:2016-09-11 09:57:40
【问题描述】:
有一个远程 sql server db,我只能通过 web 服务访问它,将 sql 文本传递给它。服务将传入的 sql 文本包装成一个 select 语句,并返回查询结果。
例如如果我想执行:
select employeeName, caseNumber from AppTable
我传入服务'select employeeName, caseNumber, 12344 vendorId from AppTable',服务实际执行如下:
select *
from (select employeeName, caseNumber, 12344 vendorId from AppTable) s where s.vendorId = 12344
要求是每个员工的老板都得到所有案例,所以它会像
select employeeBoss, count(caseNumber) from AppTable group by employeeBoss
问题是employeeBoss 没有存储在远程数据库中,我将不得不通过webservice 传递这些信息。 因此,假设我有一个类似 xml 的文本,可以传递给服务:
<Employee>
<Name>John Doe</Name>
<EmployeeBoss>Bill G</EmployeeBoss>
</Employee>
<Employee>
<Name>Jane Smith</Name>
<EmployeeBoss>Gordon B</EmployeeBoss>
</Employee>
<Employee>
<Name>Derek Edward</Name>
<EmployeeBoss>Gordon B</EmployeeBoss>
</Employee>
有什么方法可以在 select 语句中解析 XML 以便我得到想要的结果?我想得到这样的东西
select x.EmployeeBoss, count(distinct caseNumber)
来自 AppTable a
内部连接 EmployeeFROMXML x 在 x.Name = a.EmployeeName
由 x.EmployeeBoss 分组
但我没有 EmployeeFROMXML 表,我只有一个类似 XML 的字符串。那么如何将 XML 之类的字符串转换为 sql 表,以便仅在 SELECT 语句的帮助下才能与现有的 AppTable 连接。 (不允许变量声明,因为我只能使用只支持选择语句的网络服务)
【问题讨论】:
-
正确,已修复...感谢您指出这一点。
标签: sql-server xml