2011-01-29 60 views
0

访问如何链接以下2个表来获得(如下所示)在SQL Server中的结果?'

LoginID, StaffName, qno, trackno, tmstamp 
1,  James,  1001, 1,  01-01-2011 
2,  John,  1002, 2,  01-01-2011 
2,  John,  1003, 3,  01-01-2011 

物质

content, trackno, tmstamp 
001,  1,  01-01-2011 
002,  1,  01-01-2011 
001,  2,  01-01-2011 
002,  2,  01-01-2011 
003,  2,  01-01-2011 
001,  3,  01-01-2011 

结果

StaffName, tmstamp, noOfQno, noOfContent 
James,  01-01-2011, 1,  2 
John,  01-01-2011, 2,  4 

VisitMatter是2张桌子。

结果是我想要的结果。

我该如何做到这一点?

+0

大家好,TKZ答案。 Sry没有明确问题。我编辑了这个问题。你的答案与我想要的有所不同。 – william 2011-01-31 03:15:14

回答

1

试试这个:

SELECT StaffName, tmstamp, noOfQno, noOfContent 
    FROM (
       SELECT StaffName, tmstamp, trackno, COUNT(1) noOfQno 
        FROM Visit 
       GROUP BY StaffName, tmstamp, trackno 
      ) a LEFT JOIN 
      (
       SELECT trackno, COUNT(1) noOfContent 
        FROM Matter 
       GROUP BY trackno 
      ) b 
    ON b.trackno = a.trackno 
+0

你的发言非常接近。但它会导致个人qno。如果有3个qno,则有3个线。 – william 2011-01-31 03:05:26

+0

你可以更新你有3 qno的帖子中的数据吗? – Chandu 2011-01-31 03:28:54

0

同Cyber​​nates答案,但CTE:

;with MattersGrouped as (
    select trackno, COUNT(*) noOfContent 
    from Matter 
    group by trackno 
), 
VisitsGrouped as (
    select Staffname, trackno, tmstamp, COUNT(*) noOfQno 
    from Visit 
    group by Staffname, trackno, tmstamp 
) 
select t1.StaffName, t1.tmstamp, t2.noOfContent, t1.noOfQno 
from VisitsGrouped t1 left join MattersGrouped t2 on (t1.trackno = t2.trackno) 
1
SELECT 
    v.StaffName, 
    v.tmstamp, 
    noOfQno = COUNT(DISTINCT v.qno), 
    noOfContent = COUNT(m.content) 
FROM Visit v 
    LEFT JOIN Matter m ON v.trackno = m.tracno AND v.tmstamp = m.tmstamp 
GROUP BY v.StaffName, v.tmstamp 
相关问题