uniqueidentifier与int error不兼容

问题描述:

这是我的存储过程中的Select语句,我试图根据用户输入的开始日期来获取所有的情况。我不断收到'uniqueidentifier与int不兼容'。不知道如何去做。uniqueidentifier与int error不兼容

(
      SELECT COUNT(DISTINCT C.CaseID) 
      FROM [Case] C 
      INNER JOIN CaseOffice COD ON C.CaseId = COD.CaseId 
      INNER JOIN Office OD ON COD.OfficeId = OD.OfficeId 
      WHERE C.DateCreated <= @BeginDate AND OD.OfficeId = O.OfficeId 
      AND C.CaseId NOT IN 
      (
       SELECT CaseId 
       FROM CaseStatusChange CSC 
       WHERE CSC.DateClosed < @BeginDate 
      ) 
      UNION 
      SELECT ReOpened.CaseId FROM 
      (
       SELECT C.CaseId, MAX(CSC.DateReopened) AS DateReOpened 
       FROM [Case] C 
       INNER JOIN [CaseStatusChange] CSC ON C.CaseId = CSC.CaseId 
       WHERE CSC.DateReopened <= @BeginDate 
       GROUP BY C.CaseId 
      ) ReOpened 
      WHERE ReOpened.CaseId NOT IN -- Wasn't reopened and closed 
      (
       SELECT CaseId FROM CaseStatusChange 
       WHERE CaseId = ReOpened.CaseId AND 
       CaseStatusChange.DateClosed BETWEEN ReOpened.DateReopened AND @BeginDate 
      ) 
     )AS OpenBeginCases 

CaseID是唯一标识符,你UNION这与COUNT(DISTINCT C.CaseID),这将是int

... 
SELECT COUNT(DISTINCT C.CaseID) --int 
... 
UNION 
... 
SELECT ReOpened.CaseId --uniqueidentifier 
... 

所以这个错误可以预期。第一个条款中是否需要COUNT?

+0

我想根据开始日期来计算有多少个开放案例。我删除了union,只是将它留作第一个count子句并执行它,但是所有列的返回值都是0. – Masriyah 2011-06-15 16:10:08

+0

您询问了有关错误的信息:我告诉过您为什么会发生这种情况。计数为零意味着您的查询错误,这是一个*不同的问题:它的工作原理,没有错误,只是错误的数据。 – gbn 2011-06-15 16:38:02

+0

谢谢你的帮助。 – Masriyah 2011-06-15 16:42:15