我如何使用SQL服务器将select变成另一个table?
How do I use SQL Server to select into another table?
我正在整合 Web 服务。我正在用一个包含数据的调用替换对该服务的多个调用。
我创建了一个 table:
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? 但我仍处于停顿状态。
最终结果应该是 table "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 行。
第三个字段很容易添加,但留给自己做
我正在整合 Web 服务。我正在用一个包含数据的调用替换对该服务的多个调用。
我创建了一个 table:
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? 但我仍处于停顿状态。
最终结果应该是 table "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 行。
第三个字段很容易添加,但留给自己做