2013-08-28 164 views
0

我使用SQL Server 2000,从而无法使用CTE的连接三个SQL查询

DECLARE @reportdate AS DATETIME 

SET @reportdate='08/26/2013' 

1查询

SELECT SUM(NENTEREDACD) AS calls, 
     DINTERVALSTART 
FROM dbo.QUEUESTATS 
WHERE (DINTERVALSTART > @reportdate + ' 00:00:00.000') 
     AND (DINTERVALSTART < DATEADD(d, 1, @reportdate) + ' 00:00:00.000') 
GROUP BY DINTERVALSTART 
ORDER BY DINTERVALSTART 

第二查询

SELECT count(cname) AS AvaiAgents, 
     dintervalstart AS startdatetime 
FROM (SELECT dintervalstart, 
       cname 
     FROM [dbo].[AGENTSTATS] 
     GROUP BY dintervalstart, 
        cname 
     HAVING (DINTERVALSTART > @reportdate + ' 00:00:00.000') 
       AND (DINTERVALSTART < DATEADD(d, 1, @reportdate) + ' 00:00:00.000')) T 
GROUP BY T.dintervalstart 

3ND查询

SELECT count(cname) AS ActiveAgents, 
     dintervalstart AS startdatetime 
FROM (SELECT dintervalstart, 
       cname 
     FROM [dbo].[AGENTSTATS1] 
     GROUP BY dintervalstart, 
        cname 
     HAVING (DINTERVALSTART > @reportdate + ' 00:00:00.000') 
       AND (DINTERVALSTART < DATEADD(d, 1, @reportdate) + ' 00:00:00.000')) T 
GROUP BY T.dintervalstart 

我想只拉第一个查询的记录,所以它应该像 ,所以我需要从三个不同的查询获得三列。常见的是时间戳

I inetval  Calls Avaiagents  Active agents 
08/26/2012 20  22    23 
+0

查找到UNION ALL它可以让你对所有三个查询加入到一个表 –

回答

0

cte's只是使用using关键字派生表。你能以老式的方式做到吗?

select somefields 
from a_table join 
(select etc) temp on t.something = a_table.something 
+0

第一也是一个查询 – nangel

+0

这是否有什么区别? –