首页 > 解决方案 > 我想将查询存储为 JSON 对象。(错误:SELECT INTO 语句中不允许使用 FOR JSON 子句。)

问题描述

CREATE TABLE #T ( DateColumn DATE, SomeColA VARCHAR (20), Temp INT, 
                  Attribute1 VARCHAR (10), Attribute2 VARCHAR (10) )
INSERT INTO #T VALUES ('20180101', 'A', 8, 'D', NULL)
INSERT INTO #T VALUES ('20180201', 'B', 10, NULL, 'A')
INSERT INTO #T VALUES ('20180301', 'B', 12, NULL, NULL)
INSERT INTO #T VALUES ('20180401', 'A', 14, 'D', 'C')
INSERT INTO #T VALUES ('20180501', 'A', 15, 'E', 'Y')

SELECT DateColumn,  
       SomeColA, 
       Temp, 
       Attribute1, 
       Attribute2
-- INTO #NewTable
FROM #T FOR JSON AUTO

现在我在几页上读到这是不可能的。然而,这些页面不包括的是它是如何工作的。

一定很简单,但我找不到。

非常感谢!

标签: jsonsql-servertsql

解决方案


JSON

SQL Server (starting with 2016)

https://docs.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server?view=sql-server-2017

或更高的 db 兼容级别到 130

例如,使用 CTE 将查询存储为 JSON 对象

;WITH x(a) as 
(
SELECT DateColumn,  
       SomeColA, 
       Temp, 
       Attribute1, 
       Attribute2
FROM #T FOR JSON AUTO
)
SELECT a INTO #b FROM x

推荐阅读