如何使用子选择计算值

时间:2014-03-03 13:41:42

标签: sql sql-server sql-server-2008

我正在处理存储过程。结构的构建方式是我们使用其他过程在表中存储数据,然后我们调用它来获取报告以使我们的系统更快。好吧,在这种特殊情况下,我已经获得了一个表中所需的所有数据,但我想从另一个表中提取数据。在这个中我想计算两次之间的值。

create table #Temp (row int IDENTITY (1, 1) NOT NULL, Col01 varchar(100), 
Col02   varchar(100), Col03 varchar(100),Col04 varchar(100),Col05 varchar(100),
Col06 varchar(100),Col07 varchar(100),Col08 varchar(100),
Col09 varchar(100),Col10 varchar(100),Col11 varchar(100),Col12 varchar(100))

Insert into #Temp    (Col01,Col02,Col03,Col04,Col05,Col06,Col07,Col08,
Col09,Col10,Col11,Col12)
Select A,B,C,D,E,((Select s.Counter from 
TableS s where   s.tid = '8:00'and s.Namn = h.Namn) 
-
(Select s.Counter from Maintenance.dbo.TableS s where s.tid = '17:00' 
and s.Namn = h.Namn)), F, G,
H,I,J,K 
from TableH h
order by Tid

我收到错误消息:我的猜测是我不能在子选择中使用条件?

Msg 512, Level 16, State 1, Procedure Top_Secret, Line 16
Subquery returned more than 1 value. 
This is not permitted when the subquery follows =,   
!=, <, <= , >, >= or when the subquery is used as an expression.

2 个答案:

答案 0 :(得分:1)

从Maintenance.dbo.TableS s中选择 TOP 1 s.Counter,其中s.tid =&#39; 17:00&#39; 和s.Namn = h.Namn

答案 1 :(得分:0)

错误是自我描述..有多个匹配您的过滤器的行。以仅匹配一行的方式修改子查询。