2017-03-08 8 views
0

SQL Server Management Studio 2012にクエリを作成しましたが、これはテスト時に正常に動作します。ただし、Power Pivotでこのコードを使用しようとすると、次のエラーが表示されます。カスタムSQLクエリを使用するとPowerPivotエラーが発生する

OLE DBまたはODBCエラー。

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 >[email protected] 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 >[email protected] 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 
+0

どの種類のデータソースを使用していますか? – McNets

+0

SQL Server 2012からすべてのデータが抽出されています –

答えて

1

もう少し研究し、試行錯誤の後、SET NOCOUNT ON;の単純な加算はすべての私の苦境を治すように見えました。

関連する問題