2014-10-13 4 views
0

모두. 나는 내가 사용 사례를 이길 셀 수여러 필드에 대해 카운트 기능이있는 SQL에 액세스하십시오.

Team1 win loss tie 
    a  4 2 1 
    b 2  2 3 

같은 출력 team1 결과 통계에 원하는

Team1 Team2 result 
    a b  win 
    a c  tie 
    b d  loss 
    c a  win 
    d c  win 

같은 테이블의 모양이

SELECT TEAM1,Count(Result='win') as Win_Number 
From GAMES 
Where Result='win' 
Group by TEAM1 

하지만 출력 손실과 넥타이에 무엇을 추가해야합니다 ? 가입을 사용합니까?

업데이트 : "iif sum"명령을 사용하여 문제를 해결하십시오. XQbert의 게시물을 참조하십시오. 많은 감사합니다.

답변

1

이것은 하나의 방법 ... 내가 그래서이 작동하지 않습니다 MSACCESS

을 선택 인라인에서 작동하지 않는 경우를 잊고 계속

입니다 :

SELECT [Home team], 
    sum(CASE WHEN result='win' THEN 1 else 0 END) as Win, 
    sum(CASE WHEN result='loss' THEN 1 else 0 END) as Loss, 
    sum(CASE WHEN result='tie' THEN 1 else 0 END) as Tie 
FROM GAMES 
GROUP BY [Home team] 

을하지만이 일 :

SELECT [Home team] 
    sum(iif(result='win', 1,0)) as Win, 
    sum(iif(result='loss', 1,0)) as Loss, 
    sum(iif(result='tie', 1,0)) as Tie, 
FROM GAMES 
    GROUP BY [Home team] 

기본적으로 홈 팀으로 그룹화 된 테이블의 각 결과를 평가하고 값을 설정합니다. 결과가 승리, 손실 또는 동점이면 1로 설정하고 그렇지 않으면 0으로 설정합니다. 그러면 주어진 홈 팀의 모든 결과를 합산합니다. 각 결과가 이기기 손실 또는 동점이기 때문에, 1은 승리, 손실 또는 동점 그러나 3의 한 안에 만 나타날 것이다; 그리고 아마도 결과가 승리 손실이나 동점 이외의 것이라면 아무 것도 할 수 없습니다. 아래에 크로스 탭 쿼리 문을 사용합니다.

그래서 데이터는

Team1 win loss tie 
    a  4 2 1 
    b  2 2 3 

액세스가 좋은 기능이 크로스 탭 쿼리를 호출 한 ... 합

Team1 win loss tie 
    a  1 0 0 
    a  1 0 0 
    a  1 0 0 
    a  1 0 0 
    a  0 1 0 
    a  0 1 0 
    a  0 0 1 
    b  1 0 0 
    b  1 0 0 
    b  0 1 0 
    b  0 1 0 
    b  0 0 1 
    b  0 0 1 
    b  0 0 1 

다음 합계가 당신에게주는 일어날 전에 ... 같을 것이다 . 쿼리 유형을 this로 변경하고 함께 플레이하십시오. 많은 대용량 데이터베이스에서 액세스하지 못하는 좋은 기능입니다! IT는 (시간이/손실 넥타이 주어진 팀에 게재 우승 횟수) 그것에 의해 집계 후 (귀하의 경우 결과) 행의 값에 따라 열을 생성 할 수 있습니다

예 : https://support.office.com/en-us/article/Make-summary-data-easier-to-read-by-using-a-crosstab-query-8465b89c-2ff2-4cc8-ba60-2cd8484667e8

사용 방법 : http://office.microsoft.com/en-us/access-help/create-a-select-or-crosstab-query-mdb-HP005187965.aspx

+0

답장을 보내 주셔서 감사합니다. BTW, "THEN", "else"및 "END"는 무엇을할까요? –

+0

Access에서는 대소 문자가 아닌 iif가 필요합니다. 'sum (iif (result = 'win', 1, 0))을 Win으로 쓰십시오.'(누락 쉼표도) –

+0

정말 잘 작동합니다. –

관련 문제