我正在整合Web服务。我正在用一个包含数据的调用替换对服务的多个调用。
我创建了一个表:
CREATE TABLE InvResults
(
Invoices nvarchar(max),
InvoiceDetails nvarchar(max),
Products nvarchar(max)
);
我使用了(max)
,因为我不知道json此时会变得多么复杂。
我需要做这样的选择(这是伪代码,而不是实际的SQL):
SELECT
(SELECT *
INTO InvResults for Column Invoices
FROM MyInvoiceTable
WHERE SomeColumns = 'someStuffvariable'
FOR JSON PATH, ROOT('invoices')) AS invoices;
SELECT
(SELECT *
INTO InvResults for Column InvoiceDetails
FROM MyInvoiceDetailsTable
WHERE SomeColumns = 'someStuffvariable'
FOR JSON PATH, ROOT('invoicedetails')) AS invoicedetails;
我不知道该如何设置格式,而我的Google技能目前使我感到失望。我知道我可能想使用UPDATE语句,但是我不确定如何结合我的其余要求来执行此操作。我正在探索How do I UPDATE from a SELECT in SQL Server?,但仍处于停顿状态。
最终结果应该是表“ InvResults”,该表具有3列,其中包含一行,其中Select语句的结果作为JSON。列名的定义应与json根对象相同。
INSERT INTO InvResults(Invoices,InvoidesDetails)
SELECT
(SELECT *
INTO InvResults for Column Invoices
FROM MyInvoiceTable
WHERE SomeColumns = 'someStuffvariable'
FOR JSON PATH, ROOT('invoices'))
,
(SELECT *
INTO InvResults for Column InvoiceDetails
FROM MyInvoiceDetailsTable
WHERE SomeColumns = 'someStuffvariable'
FOR JSON PATH, ROOT('invoicedetails'))
;
因为SELECT.. FOR JSON
仅在作品上方返回1行。
第三字段很容易添加,但是可以自己做yourself