我遇到了下面提到的sql查询的问题。 基本上我试图列出所有在当前周和前一周每天捕获数据的系统用户。子查询没有引入EXISTS时,只能在选择列表中指定一个表达式。 Sql Server 2008
问题与我的查询下面我得到“只有一个表达式可以在选择列表中指定子查询未与EXISTS引入 ”。我已经改变了这个查询的一部分来使用EXISTS,但在子查询的最后一行仍然得到相同的错误。
DECLARE @Dates date;
SET @Dates = '20091012';
DECLARE @FirstDayOfWeek date;
DECLARE @lastDayOfWeek date;
SET @FirstDayOfWeek = dbo.[fn_GetFirstDayOfWeek](@Dates);
SET @lastDayOfWeek = DATEADD(day, 6,@FirstDayOfWeek);
SET NOCOUNT ON
SELECT DISTINCT q.CapturerId, u.Firstname, u.Lastname INTO #Users
from Wop_Questionnaires q JOIN
Frwk_Users u
ON
q.CapturerId = u.Id JOIN
Core_Areas a ON
u.X_Wop_ProvinceId = a.Id
WHERE u.X_Wop_ProvinceId = 5
SELECT (SELECT #Users.Firstname+' '+#Users.Lastname, COUNT(q.CapturerId)
from Wop_Questionnaires q JOIN #Users on q.CapturerId = #Users.CapturerId
where EXISTS(SELECT #Users.CapturerID from #Users WHERE q.CapturerId = #Users.CapturerId)
AND q.CaptureDate >=DATEADD(DAY,DATEDIFF(DAY,'19000101',@FirstDayOfWeek),'19000101')
And q.CaptureDate < DATEADD(DAY,DATEDIFF(DAY,'19000101',@FirstDayOfWeek)+1,'19000101')
GROUP BY q.CapturerId, #Users.Firstname,#Users.Lastname) Sun,
(SELECT #Users.Firstname+' '+#Users.Lastname, COUNT(q.CapturerId)
from Wop_Questionnaires q JOIN #Users on q.CapturerId = #Users.CapturerId
where EXISTS (SELECT #Users.CapturerID from #Users WHERE q.CapturerId = #Users.CapturerId)
AND q.CaptureDate >=DATEADD(DAY,DATEDIFF(DAY,'19000101',DATEADD(DAY,1,@FirstDayOfWeek)),'19000101')
AND q.CaptureDate < DATEADD(DAY,DATEDIFF(DAY,'19000101',DATEADD(DAY,1,@FirstDayOfWeek))+1,'19000101')
GROUP BY q.CapturerId, #Users.Firstname,#Users.Lastname) Mon,
(SELECT #Users.Firstname+' '+#Users.Lastname, COUNT(q.CapturerId)
from Wop_Questionnaires q JOIN #Users on q.CapturerId = #Users.CapturerId
where EXISTS(SELECT #Users.CapturerID from #Users WHERE q.CapturerId = #Users.CapturerId)
AND q.CaptureDate >=DATEADD(DAY,DATEDIFF(DAY,'19000101',DATEADD(DAY,2,@FirstDayOfWeek)),'19000101')
AND q.CaptureDate < DATEADD(DAY,DATEDIFF(DAY,'19000101',DATEADD(DAY,2,@FirstDayOfWeek))+1,'19000101')
GROUP BY q.CapturerId, #Users.Firstname,#Users.Lastname) Tue;
--;--
DROP TABLE #Users;
SET NOCOUNT OFF
感谢 Tebogo
感谢您的建议,但我实际上需要让用户每日总计在一行中。我需要计算某个地区的用户每日所做的每日Sun - Sat的条目,每个用户都列在一行中。 已经尝试了几个角度,但仍然挣扎 谢谢 – Tebogo 2010-02-08 15:51:16
啊,抱歉误读您的查询 – Paolo 2010-02-08 17:06:32