2012-11-05 2 views
0

나는 UserID, First, LastSQL에서 다른 값으로 다른 값을 표시하려면 어떻게합니까?

와 열 UserID, SiteID, SiteViews 테이블과 다른이와 나는 단지이 사이트 ID가 있습니다 First + Last, Site1Views, Site2Views

로 데이터를 표시 할 필요가 나는 사용자 당 SiteViews의 합이 필요합니다.

현재 내가 가진 :

select s.UserFirstName + ' ' + s.UserLastName as 'Name', 
j1.SiteViews as 'Site1Name', 
j2.SiteViews as 'Site2Name' 
from (Users s INNER JOIN Usage j on s.UserID = j.UserID) 

나는이 작업을 수행하는 방법을 모르겠어요. 어떤 도움을 주시면 감사하겠습니다.

+0

을 이해하는 방법이 테이블 간의 기본/외래 키 관계는 무엇인가? –

+0

UserID는 사용되는 관계입니다. 첫 번째 테이블에는 기본 키인 UsageID가 있습니다. –

답변

1

PIVOT을 사용하고 싶을 것 같은데요? 나는 그것을 시험 할 수는 없지만, 이것은 당신이 올바른 방향으로 인도 할 수 있도록해야할까요?

select s.UserFirstName + ' ' + s.UserLastName as Name, 
     [Site1Name], 
     [Site2Name] 
FROM 
     (SELECT s.UserFirstName + ' ' + s.UserLastName, 
       SiteName, 
       SiteVisits 
     from Users s 
     INNER JOIN Usage j1 
      on s.UserID = j1.UserID 
     ) 
PIVOT (SUM(SiteVisits) FOR SiteName IN ([Site1Name],[Site2Name])) as p 
+0

감사합니다! 명확히 말하면, OtherUsageTable은 첫 번째 Usage 테이블과 동일합니다. 즉 사용자 ID 1, 사이트 ID 1, 조회수 200, 사용자 ID 1, 사이트 ID 2, 조회수 300이 있습니다. 귀하의 성명서는 2 개의 사이트를 분리했지만 사용자 ID는 그룹화되지 않으며 조회수는 여러 개의 레코드로 계속 나옵니다. –

+0

답을 업데이트했습니다. 그것이 잘 될지 확신하지 못하지만, 바라건대 그것은 올바른 방향으로 당신을 가리킬 것입니다. –

1

내가

select s.UserFirstName + ' ' + s.UserLastName as Name 
,(Select COUNT(*) from SiteViews s1 where s.UserID = s1.UserID /*other condition*/) as SiteView1 
,(Select COUNT(*) from SiteViews s2 where s.UserID = s2.UserID /*other condition*/) as SiteView2 
from Users s 
관련 문제