子查询时只能指定表达式... SQL服务器

时间:2013-10-31 13:02:21

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

所以,我一直在研究一个循环来获取每天的数据回溯211天报告。 我收到此错误消息。我正在使用SQL Server 2008 R2,虽然我不知道 为什么我得到这个错误,我尝试了一些不起作用的不同的东西。所以我在这里要求非常感谢答案。

  

Msg 116,Level 16,State 1,Line 21
  当未使用EXISTS引入子查询时,只能在选择列表中指定一个表达式。

我的代码

create table #ExcelPrint (row int IDENTITY (1, 1) NOT NULL, Col01 varchar(100), 
Col02 varchar(100), Col03 varchar(100), Col04 varchar(100),Col05 varchar(100))

declare @counter int 
set @counter = 0 
insert into #excelprint (Col01,Col02,Col03) values ('Text','Number', 'Amount')
while @counter > -211 
begin 

insert into #ExcelPrint (Col01,Col02)
select (CONVERT(varchar,Dateadd(DD,@counter,GETDATE()),112)),   
(
select TableA.ColA ,sum(colB)
from db.TableA as A 
inner join db.TableB B on B.Col1 = A.Col1
inner join db.TableC C on C.Col1 = B.Col1
where amount = CONVERT(varchar,Dateadd(DD,@counter,GETDATE()),112)
and A.Col1 = 123
and B = 12
group by ColA.A
)
set @counter = @counter -1 
end

select isnull(Col01,''), Replace(ISNULL(col02,''),'.',','),
Replace(ISNULL(col03,''),'.',',')
,Replace(ISNULL(Col04,''),'.',',') from #ExcelPrint
order by row
drop table #ExcelPrint

2 个答案:

答案 0 :(得分:0)

更改

select (CONVERT(varchar,Dateadd(DD,@counter,GETDATE()),112)),   
(
select TableA.ColA ,sum(colB)
from db.TableA as A 

select CONVERT(varchar,Dateadd(DD,@counter,GETDATE()),112))
,TableA.ColA 
,sum(colB)
from db.TableA as A ...

修复insert子句中的列数和相应列上的列...

答案 1 :(得分:0)

我不知道这是否是您查询的真实语法,但我对此有一些询问。

  1. 为什么将db.TableA命名为A然后在select do:TableA.xxx中命名为A.xxx
  2. 在你的选择中,你有一个ColA,在你的where子句中,Col1是正确的,应该是不同的吗?
  3. 仍然在你的where子句中,你有一个表B,但是什么是B = 12?
  4. 如果您希望按日期获得所有内容的总和,则应删除第三列A.ColA或以不同方式编写查询。在这个时刻,当你按日期做一个小组时,ColA分裂了:)
  5. 在where子句中,金额是“交易”的日期?
  6. 除了这些,它们的语法多于逻辑,它应该有用。