Sql server 使用自定义SQL查询时出现PowerPivot错误
我在SQLServerManagementStudio 2012中构建了一个查询,经测试运行良好。但是,尝试在Power Pivot中使用此代码时,我收到以下错误: OLE DB或ODBC错误Sql server 使用自定义SQL查询时出现PowerPivot错误,sql-server,powerpivot,Sql Server,Powerpivot,我在SQLServerManagementStudio 2012中构建了一个查询,经测试运行良好。但是,尝试在Power Pivot中使用此代码时,我收到以下错误: OLE DB或ODBC错误 An error occurred while processing table 'Query'. The current operation was cancelled because another operation in the transaction failed. 有没有想过是什么导致了这个
An error occurred while processing table 'Query'.
The current operation was cancelled because another operation in the transaction failed.
有没有想过是什么导致了这个错误
我的问题是:
DECLARE @beginDate as DATE;
DECLARE @endDate as DATE;
DECLARE @tempTable AS TABLE(BusinessUnitID INTEGER, BusinessUnitName VARCHAR(255), SkillCode VARCHAR(255),
Actuals INTEGER, DateCounted DATE)
DECLARE @count as INTEGER;
SET @beginDate = (SELECT MAX(DateCounted) FROM mmapps.dbo.t_EMS_BM_ActualsHistory);
SET @endDate = DATEADD(week,1,@beginDate);
SET @count = 0;
WHILE DATEADD(week,@count,@beginDate) < DATEADD(year,1,@beginDate)
BEGIN
IF (@count = 0)
BEGIN
INSERT INTO @tempTable (BusinessUnitID,BusinessUnitName,SkillCode, Actuals, DateCounted)
SELECT a.BusinessUnitID, a.BusinessUnitName, a.SkillCode, a.TotalHeads +
(
SELECT COUNT(*)
FROM mmapps.dbo.t_EMS_BM_ChartData AS b
WHERE a.BusinessUnitID = b.BusinessUnitID AND a.SkillCode = b.SkillCode
AND b.ActivityTypeID BETWEEN 6 AND 10 AND b.SkillCode IS NOT NULL
AND b.Date < @endDate) -
(
SELECT COUNT(*)
FROM mmapps.dbo.t_EMS_BM_ChartData AS b
WHERE a.BusinessUnitID = b.BusinessUnitID AND a.SkillCode = b.SkillCode
AND b.ActivityTypeID BETWEEN 6 AND 10 AND b.SkillCode IS NOT NULL
AND b.Date < @endDate
)
AS Actuals
,DATEADD(week,@count,@beginDate) AS DateCounted
FROM mmapps.dbo.t_EMS_BM_ActualsHistory AS a
WHERE a.DateCounted = @beginDate
END
IF (@count > 0)
BEGIN
INSERT INTO @tempTable (BusinessUnitID,BusinessUnitName,SkillCode, Actuals, DateCounted)
SELECT a.BusinessUnitID, a.BusinessUnitName, a.SkillCode, a.Actuals +
(
SELECT COUNT(*)
FROM mmapps.dbo.t_EMS_BM_ChartData AS b
WHERE a.BusinessUnitID = b.BusinessUnitID AND a.SkillCode = b.SkillCode
AND b.ActivityTypeID BETWEEN 6 AND 10 AND b.SkillCode IS NOT NULL
AND b.Date >=@beginDate AND b.Date < @endDate) -
(
SELECT COUNT(*)
FROM mmapps.dbo.t_EMS_BM_ChartData AS b
WHERE a.BusinessUnitID = b.BusinessUnitID AND a.SkillCode = b.SkillCode
AND b.ActivityTypeID BETWEEN 6 AND 10 AND b.SkillCode IS NOT NULL
AND b.Date >=@beginDate AND b.Date < @endDate
)
AS Actuals
,DATEADD(week,@count,@beginDate) AS DateCounted
FROM @tempTable AS a
WHERE a.DateCounted = (SELECT MAX(DateCounted) FROM @tempTable)
END
SET @count = @count + 1
END
SELECT * FROM @tempTable
ORDER BY DateCounted DESC
经过更多的研究和尝试和错误,一个简单的增加设置NOCOUNT;似乎治愈了我所有的烦恼。您使用的是哪种数据源?所有数据都是从SQL Server 2012中提取的