MS 액세스 : 액세스 쿼리를 사용하여 고유 한 값을 어떻게 계산할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1412442

  •  06-07-2019
  •  | 
  •  

문제

다음은 아래에 주어진 현재 복잡한 쿼리입니다.

SELECT DISTINCT Evaluation.ETCode, Training.TTitle, Training.Tcomponent, Training.TImpliment_Partner, Training.TVenue, Training.TStartDate, Training.TEndDate, Evaluation.EDate, Answer.QCode, Answer.Answer, Count(Answer.Answer) AS [Count], Questions.SL, Questions.Question
FROM ((Evaluation INNER JOIN Training ON Evaluation.ETCode=Training.TCode) INNER JOIN Answer ON Evaluation.ECode=Answer.ECode) INNER JOIN Questions ON Answer.QCode=Questions.QCode
GROUP BY Evaluation.ETCode, Answer.QCode, Training.TTitle, Training.Tcomponent, Training.TImpliment_Partner, Training.Tvenue, Answer.Answer, Questions.Question, Training.TStartDate, Training.TEndDate, Evaluation.EDate, Questions.SL
ORDER BY Answer.QCode, Answer.Answer;

다른 열 훈련이 있습니다. 뚜렷한 훈련을 세어야합니다. Tcode, 누구든지 나를 도울 수 있습니까? 더 많은 정보가 필요하면 알려주십시오

도움이 되었습니까?

해결책

노력하다

select ..., count(distinct Training.Tcode) as ..., ...

편집 - 이제 이것을보세요 ...

다음 SQL 코드를 사용하십시오. 첫 번째 선택은 SQL Server 가이 작업을 수행하는 방법이며 두 번째 쿼리는 액세스를 준수해야합니다 ...

declare @t table (eCode int, tcode int)
insert into @t values(1,1)
insert into @t values(1,1)
insert into @t values(1,2)
insert into @t values(1,3)
insert into @t values(2,2)
insert into @t values(2,3)
insert into @t values(3,1)    

select 
    ecode, count(distinct tCode) countof
from
    @t
group by
    ecode

select ecode, count(*)
from
    (select distinct tcode, ecode
    from  @t group by tcode, ecode) t
group by ecode

다음을 반환합니다.

ecode tcode
1       3 (there are 3 distinct tcode for ecode of 1)
2       2 (there are 2 distinct tcode for ecode of 2)
3       1 (there is 1 distinct tcode for ecode of 3)

다른 팁

1 년 전 Google 그룹에서 비슷한 질문을 게시했습니다. 훌륭한 답변을 받았습니다.


Crosstab은 (스티브 다신의 원래 제안에서) 할 수 있습니다.

  TRANSFORM COUNT(*) AS theCell
  SELECT ValDate,
      COUNT(*) AS StandardCount,
      COUNT(theCell) AS DistinctCount
  FROM tableName
  GROUP BY ValDate
  PIVOT fund IN(Null)

매일 (그룹)에 대해 기록 수와 다른 (별개의) 자금 수를 반환합니다.

변화

PIVOT fund IN(Null)

에게

PIVOT subfund IN(Null)

똑같이 얻으려면 서브 펀드를 위해.

Vanderghast, MVP에 액세스 할 수 있기를 바랍니다


그것이 작동하는지 모르겠지만 다음은 해당 게시물에 대한 링크입니다.

sadat, 다음과 같은 하위 퀘스트를 사용하십시오.

SELECT DISTINCT Evaluation.ETCode, Training.TTitle, Training.Tcomponent, Training.TImpliment_Partner, Training.TVenue, Training.TStartDate, Training.TEndDate, Evaluation.EDate, Answer.QCode, Answer.Answer, Count(Answer.Answer) AS [Count], Questions.SL, Questions.Question,
(SELECT COUNT(*) FROM Training t2 WHERE t2.TCode = Evalution.ETCode) as TCodeCount
FROM ((Evaluation INNER JOIN Training ON Evaluation.ETCode=Training.TCode) INNER JOIN Answer ON Evaluation.ECode=Answer.ECode) INNER JOIN Questions ON Answer.QCode=Questions.QCode
GROUP BY Evaluation.ETCode, Answer.QCode, Training.TTitle, Training.Tcomponent, Training.TImpliment_Partner, Training.Tvenue, Answer.Answer, Questions.Question, Training.TStartDate, Training.TEndDate, Evaluation.EDate, Questions.SL
ORDER BY Answer.QCode, Answer.Answer;

다음을 수행하여 액세스 할 수있는 뚜렷한 값을 계산했습니다.

select Job,sum(pp) as number_distinct_fruits

from

(select Job, Fruit, 1 as pp

from Jobtable group by Job, Fruit) t

group by Job

빈/널 필드 (내 코드 과일 필드)가있는 것처럼 조심해야합니다. 내부 선택의 위치 조항은 그것들을 무시합니다. 나는 이것을 내 블로그에 올려 놓았지만 답을 너무 쉽게 발견했다고 걱정하고 있습니다. 여기 다른 사람들은이 작업을 수행하기 위해 두 가지 하위 쿼리가 필요하다고 생각하는 것 같습니다. 내 솔루션이 실행 가능합니까?액세스의 뚜렷한 그룹화

이 블로그 항목을 살펴보면 하위 쿼리 로이 작업을 수행 할 수 있습니다 ....

http://blogs.msdn.com/access/archive/2007/09/19/writing-a-count-distinct-query-in-access.aspx

나는 제안 할 것이다

select R_rep,sum(pp) as number_distinct_Billnos from (select R_rep, Billno, 1 as pp from `Vat_Sales` group by R_rep, Billno) t group by R_rep

이 시도:

SELECT DISTINCT e.ETCode, t.TTitle, t.Tcomponent, 
      t.TImpliment_Partner, t.TVenue, t.TStartDate, 
      t.TEndDate, e.EDate, a.QCode, a.Answer, 
      q.SL, q.Question,
      Count(a.Answer) AnswerCount,
      Min(Select Count(*) 
       From (Select Distinct TCode From Training) As Z ) TCodeCount    
FROM Evaluation As e 
   JOIN Training AS t ON e.ETCode=t.TCode
   JOIN Answer AS a ON e.ECode=a.ECode
   JOIN Questions AS q ON a.QCode=q.QCode
GROUP BY e.ETCode, a.QCode, t.TTitle, t.Tcomponent, 
     t.TImpliment_Partner, t.Tvenue, a.Answer, q.Question, 
     t.TStartDate, t.TEndDate, Evaluation.EDate, q.SL
ORDER BY a.QCode, a.Answer;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top