我需要一个查询来对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')
)
但是服务器正在返回并且错误:
子查询返回的值超过1。这是不允许的 子查询跟随=,!=,<,< =,>,> =或当子查询用作 表达。
我对SQL很陌生,如果有人帮助我,我将不胜感激。
答案 0 :(得分: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
答案 1 :(得分:3)
试试这个!!
您可以使用数据透视运算符
select * into newtab from [dbo].[Tab]
pivot(
max(value)
for varname in([var1],[var2],[var3])
)as piv;