我如何使用SQL Server选择进入另一个表?

问题描述 投票:0回答:1

我正在整合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根对象相同。

sql json sql-server temp-tables
1个回答
1
投票
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

© www.soinside.com 2019 - 2024. All rights reserved.