registros registro numero mostrar distintos diferentes dcount dcont contar consulta sql ms-access count distinct

sql - registro - dcount()



MS ACCESS: ¿Cómo puedo contar un valor distinto usando la consulta de acceso? (7)

Echa un vistazo a esta entrada de blog, parece que puedes hacer esto con subconsultas ...

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

aquí está la consulta compleja actual dada a continuación.

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;

Hay otra columna Training.TCode. Necesito contar Training.TCode distinto, ¿alguien puede ayudarme? Si necesita más información, por favor hágamelo saber


Logré hacer un valor de recuento distinto en Access haciendo lo siguiente:

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

Tienes que tener cuidado ya que si hay un campo en blanco / nulo (en mi campo de fruta de código) el grupo lo contará como un registro. Una cláusula WHERE en la selección interna ignorará aquellos. He puesto esto en mi blog, pero estoy preocupado de haber descubierto la respuesta con demasiada facilidad; otros aquí parecen pensar que necesitas dos subconsultas para que esto funcione. ¿Mi solución es viable? Distintas agrupaciones en Access


Publiqué una pregunta similar hace un año en grupos de Google. Recibí una excelente respuesta:

Una tabla cruzada puede hacer (a partir de una propuesta original de Steve Dassin) siempre que cuente el fondo, ya sea el subfondo:

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

que, por cada día (grupo), devolverá el número de registros y el número de fondos diferentes (distintos).

Cambio

PIVOT fund IN(Null)

a

PIVOT subfund IN(Null)

para obtener lo mismo, para los subfondos.

Esperando que pueda ayudar, Vanderghast, Access MVP

No sé si funcionará, pero aquí hay un enlace a esa publicación .


Sadat, usa una subconsulta como esta:

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;


Yo propondría

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


prueba esto:

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;


tratar

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

EDITAR - por favor ahora mira esto ...

Tome el siguiente código SQL. La primera selección es cómo SQL Server haría esto y la segunda consulta debería ser compatible con el acceso ...

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

Devuelve lo siguiente:

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)