【问题标题】:How do I use SQL Server to select into another table?如何使用 SQL Server 选择另一个表?
【发布时间】:2020-03-30 18:10:03
【问题描述】:

我正在整合一个网络服务。我正在用一个包含数据的调用替换对服务的多个调用。

我已经创建了一个表:

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;

我不知道如何格式化这个,我的谷歌技能在这一点上让我失望。我知道我可能想使用 UPDATE 语句,但我不确定如何结合我的其他要求来执行此操作。我正在探索How do I UPDATE from a SELECT in SQL Server?,但仍处于停顿状态。

最终结果应该是一个表“InvResults”,它有 3 列,其中一行包含来自 Select 语句的结果作为 JSON。列名应与 json 根对象定义相同。

【问题讨论】:

    标签: sql json sql-server temp-tables


    【解决方案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 行以上的作品。

    第三个字段很容易添加,但留给自己做吧?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-06
      • 2023-03-03
      • 2015-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多