来自SQL表的透视表查询有时会出现错误

来自SQL表的透视表查询有时会出现错误,sql,tsql,pivot-table,Sql,Tsql,Pivot Table,使用PowerPivot 10.50.1747.0运行Excel 2010,访问SQL Server 2005 SP2 我正在修改Excel数据透视表。它通过查询从SQL表获取数据。我正在“表属性”下对查询进行更改。当我输入新查询并单击“验证”按钮时,我会得到“SQL语句有效”。如果我单击“设计”按钮并在生成的窗口中单击“运行”(!)按钮,我会得到正确的数据。但是,当我走出“设计”窗口并单击“保存”按钮时,会出现以下错误: ============== The refresh operation

使用PowerPivot 10.50.1747.0运行Excel 2010,访问SQL Server 2005 SP2

我正在修改Excel数据透视表。它通过查询从SQL表获取数据。我正在“表属性”下对查询进行更改。当我输入新查询并单击“验证”按钮时,我会得到“SQL语句有效”。如果我单击“设计”按钮并在生成的窗口中单击“运行”(!)按钮,我会得到正确的数据。但是,当我走出“设计”窗口并单击“保存”按钮时,会出现以下错误:

==============
The refresh operation failed because the source data base or the table does 
not exist, or because you do not have access to the source

More Details:
OLE DB or ODBC error.
An error occurred while processing the 'Query' table.
The operation has been cancelled.
==============
这是怎么回事?(我正在使用一个表变量-这会导致问题吗?)

代码如下:

declare @WCsWithDups TABLE(  
 WOStatus Char(1) not null,  
 WOCreated DateTime not null,  
 WorkOrderNo VarChar(15) not null,  
 WorkCenterID VarChar(6) not null,  
 ItemClassID VarChar(12) not null,  
 StockItem Char(1) not null,  
 FirstChar Char(1) not null,  
 MaxWODays SmallInt not null  
)  

insert into @WCsWithDups(WOStatus, WOCreated, WorkOrderNo, WorkCenterID, ItemClassID, StockItem, FirstChar, MaxWODays)  
select DISTINCT  
case 
 when wocompleted is null then 'O' 
 else 'C' end as WOstatus, 
wocreated, 
WorkOrderNo, 
workcenterid, 
itemclassid, 
case when timinventory.minstockqty>0 then 'Y' 
 when timinventory.maxstockqty>0 then 'Y' 
 when timinventory.safetystockqty>0 then 'Y' 
 when timinventory.stdordqty>0 then 'Y' 
 else 'N' end as stockitem, 
left(itemproduced,1) as FirstChar,
(select  max(datediff(day,wocreated,transdate)+1) from vdvMT b where TR1.workorderno=b.workorderno) as maxwodays

from vdvMT as TR1
 left join tInv on TR1.itemkeyproduced=tInv.itemkey and TR1.whsekey=tInv.whsekey
where type='L' and wocreated>=(getdate()-365) and (workcenterid = 'Shed' or workcenterid = 'OP') 

delete from @WCsWithDups
where WorkOrderNo in (
 select WorkOrderNo from @WCsWithDups group by WorkOrderNo having count(WorkOrderNo) = 1);

select distinct WOStatus, WOCreated, WorkOrderNo, 'Shed+OP' as WorkCenterID, ItemClassID, StockItem, FirstChar, MaxWODays 
from @WCsWithDups

正在扫描未回答的问题-看起来OP得到了这个问题的答案:

在插入前设置不计数,在插入后设置不计数

PowerPivot只支持一个记录集 在您的情况下,通过执行insert和 删除你会得到多个结果 设置可能是问题所在的集合


错误消息的格式有点混乱-第一组等号是用来作为开头分隔符的;错误在“…被取消”后结束。(不知道为什么该文本比其他文本大…)您能将生成的SQL代码粘贴到您的问题中吗?这真的会很有帮助。好的,我编辑了我的原始帖子以包含问题代码。如果您运行SQL Server Profiler,当您单击“保存”按钮时,实际会发生什么?它向服务器发送了什么查询?确定-终于运行了它(这里是忙碌的一天)。我在分析器中没有看到任何“奇怪”的东西,尽管我不确定我到底应该寻找什么。对于初学者来说,第一个跟踪项以以下内容开头:declare@p1 int set@p1=0 exec sp_prepare@p1 output,NULL,N'',1 select@p1==========================Ok,就是这样。下一个事件包含确切的查询。此“保存”操作总共有44行事件。