0

0 より大きい場合はケース数に基づいて結果を返そうとしていますが、ストアド プロシージャを実行しようとすると、次のエラーが表示されます。これは、where 句でネストされた select ステートメント用です。

SELECT 
      O.OfficeId,
      O.OfficeName AS Name,
      AT.Description AS CaseActivity,
      SUM(A.Duration) AS [CaseMinutes], 
      CAST(SUM(A.Duration) AS FLOAT) / 60 AS [CaseHours],  
      COUNT(A.ActivityId) AS Activities,
      COUNT(DISTINCT A.CaseId) AS Cases,
      MIN(CAST(A.Duration AS FLOAT) / 60) AS [Case Min Time],
      MAX(CAST(A.Duration AS FLOAT) / 60) AS [Case Max Time],
      SUM(CAST(A.Duration AS FLOAT) / 60) / COUNT(A.ActivityId) AS [Case Avg Time],
      SUM(CAST(A.Duration AS FLOAT) / 60) AS [Case TotalHours]
  FROM Activity A
      INNER JOIN ActivityType AT ON A.ActivityTypeId = AT.ActivityTypeId
      INNER JOIN ActivityEntry AE ON A.ActivityEntryId = AE.ActivityEntryId
      INNER JOIN [Case] C ON A.CaseId = C.CaseId
      INNER JOIN [Office] O ON AE.OfficeId = O.OfficeId
      INNER JOIN [User] U ON C.CreatedByUserId = U.UserId
  WHERE  A.CaseId in(select A.CaseId from Activity where A.CaseId > 1 AND .dbo.DateOnly(AE.ActivityDate) BETWEEN @BeginDate AND @EndDate)
  GROUP BY 
        O.OfficeId,
        O.OfficeName,
        AT.Description

**ストアド プロシージャからの目的の GOAL* *
ケース カウントが 0 より大きい場合に、このストアド プロシージャから結果を返したいと考えています。現在、このストアド プロシージャはケース 0 以上のすべてのアクティビティを返します。ケースが 0 より大きいアクティビティを取得することにのみ関心があります。where 句で、結果をケース > 0 にフィルタリングする別の select ステートメントを挿入しようとしています。

4

1 に答える 1

0

エラーメッセージはあなたに伝えています

比較の 1 つは、異なるタイプの 2 つの列からのものを比較することです。

テーブル構造を見て、比較している列にuniqueidentifierがあり、どの列にintがあるかを確認してから、SQLを見て、比較している列を確認してください。

于 2012-06-04T13:32:32.390 に答える