0

因此,我一直在进行循环以获取 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
4

2 回答 2

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 ...

修复插入子句中的列数并在适当的列上分组...

于 2013-10-31T13:14:16.727 回答
0

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

  1. 为什么将 db.TableA 命名为 A 然后在 select do : TableA.xxx do A.xxx
  2. 在您的选择中,您有一个 ColA,而在您的 where 子句中,一个 Col1 是正确的并且应该是不同的吗?
  3. 仍然在您的 where 子句中,您有一个表 B,但是 B = 12 是什么?
  4. 如果您想按日期汇总所有内容,则应删除第三列 A.ColA 或以不同的方式编写查询。此刻,当您按日期进行分组时,ColA 它被拆分了:)
  5. 在 where 子句中,amount 是“交易”的日期?

除了这些,它们是大多数语法而不是逻辑,它应该可以工作。

于 2013-10-31T14:44:39.647 回答