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?
我想根据开始日期来计算有多少个开放案例。我删除了union,只是将它留作第一个count子句并执行它,但是所有列的返回值都是0. – Masriyah 2011-06-15 16:10:08
您询问了有关错误的信息:我告诉过您为什么会发生这种情况。计数为零意味着您的查询错误,这是一个*不同的问题:它的工作原理,没有错误,只是错误的数据。 – gbn 2011-06-15 16:38:02
谢谢你的帮助。 – Masriyah 2011-06-15 16:42:15