INSERT INTO查询中的多个SELECT

raf*_*kob 5 sql sql-server select

我需要一个查询,它将从Tab中对数据进行排序并将其放入NewTab,如下所示:

我正在使用SQL Server 2008 R2 Express,我尝试过代码:

INSERT INTO NewTab(Var1,Var2,Var3,DTime) VALUES (
    (SELECT Value FROM Tab WHERE VarName='Var1'),
    (SELECT Value FROM Tab WHERE VarName='Var2'),
    (SELECT Value FROM Tab WHERE VarName='Var3'),
    (SELECT DTime FROM Tab WHERE VarName='Var1')
    )
Run Code Online (Sandbox Code Playgroud)

但服务器正在返回并出错:

子查询返回的值超过1.当子查询跟随=,!=,<,<=,>,> =或子查询用作表达式时,不允许这样做.

我对SQL很陌生,如果有人帮助我,我将不胜感激.

Ger*_*ima 4

您似乎正在尝试旋转数据。还有其他方法可以做到这一点(即使用 PIVOT 运算符),但我想使用老式聚合函数可以帮助我们更好地了解数据的处理方式:

SELECT DTime
, SUM(CASE WHEN varname = 'Var1' THEN value ELSE NULL END) AS [Var1]
, SUM(CASE WHEN varname = 'Var2' THEN value ELSE NULL END) AS [Var2]
, SUM(CASE WHEN varname = 'Var3' THEN value ELSE NULL END) AS [Var3]
FROM Tab
GROUP BY DTime
Run Code Online (Sandbox Code Playgroud)