2011-01-29 1 views
0

방문어떻게 SQL 서버 아래 표시되는 결과를 얻기 위해 다음과 같은 두 테이블을 연결하는?`

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 대답합니다. 질문을 명확히하지 않기 위해 부탁하십시오. 나는 그 질문을 편집했다. 모든 대답은 내가 원하는 것과 조금 다릅니다. – william

답변

1

이 시도 :

Cybernates 대답이 아니라, CTE와
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

+0

3 개의 qno가있는 게시물의 데이터를 업데이트 할 수 있습니까? – Chandu

0

같은 :

;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 
+0

noOfQno와 noOfContent를 별명으로 사용하고 변수가 아닌 것처럼 보입니다. – Jody

+0

나는 별칭으로 정의했다고 생각했다. 'expression AS alias'는'alias = expression'과 동일하지 않습니까? 다른 상황에서 두 가지 규칙을 사용합니다. 후자는 약간 더 바람직합니다. –

관련 문제