Как посчитать совпадающие значения в столбце?

BM12
Дата: 24.11.2015 07:18:34
Добрый день.
Сижу и туплю. Есть таблица, в ней несколько полей. Делаю запрос с привязкой других таблиц. После чего, при помощи VBA фильтрую запрос и вывожу в отчет. Проблема: как посчитать совпадающие значения в одном из столбцов после фильтрации и вывести в отчет.
Пробовал что-то типа
SELECT id_topic, COUNT(id_topic) FROM posts GROUP BY id_topic;
Но, сделать группировку по одному из многих столбцов не выходит, можно только по всем. Соответственно и Count(*) тоже по всем, итог в каждой строке по единице, т.к. сами по себе строки уникальны. Но нужно только по совпадающим.
пример таблицы:
+----+-----------+------------+----------+------------+
| код | Тип |Название | Номер |Совпадения|
+----+-----------+------------+----------+------------+
| 1 | МВИ |Методика1 | 235619 | 2 |
| 2 | CB |Средство | 151542 | 1 |
| 3 | МВИ |Методика2 | 235964 | 2 |
| 4 | РД |Руководство| 1487 | 1 |
...
Как посчитать совпадения по Типу и вывести в эту же таблицу?
__Michelle
Дата: 24.11.2015 07:48:01
BM12
1. как посчитать совпадающие значения в одном из столбцов после фильтрации и вывести в отчет.
...
2. Как посчитать совпадения по Типу и вывести в эту же таблицу?
1. Поле Совпадения в отчете сделать вычисляемым со значением =DCount("Тип";"Таблица";"Тип=""" & Тип & """").
2. В таблицу? Если это не описка, и действительно в таблицу,
то в запрос включить поле DCount("Тип","Таблица","Тип=""" & Тип & """") AS Совпадения.

Обратите внимание на использование ; и , в этих выражениях.
ВМ12
Дата: 24.11.2015 10:06:21
Спасибо за помощь, выражения работают.
Но после фильтрации в поле Совпадения попадает количество из таблицы.
Буду думать дальше, возможно придется делать промежуточный запрос перед выводом в отчет.
__Michelle
Дата: 24.11.2015 10:16:11
Добавьте условие фильтра DCount(..........., "Тип=""" & Тип & "" AND <условие фильтра>")
Rivkin Dmitry
Дата: 24.11.2015 11:14:01
BM12
Добрый день.
Сижу и туплю. Есть таблица, в ней несколько полей. Делаю запрос с привязкой других таблиц. После чего, при помощи VBA фильтрую запрос и вывожу в отчет. Проблема: как посчитать совпадающие значения в одном из столбцов после фильтрации и вывести в отчет.
Пробовал что-то типа
SELECT id_topic, COUNT(id_topic) FROM posts GROUP BY id_topic;
Но, сделать группировку по одному из многих столбцов не выходит, можно только по всем. Соответственно и Count(*) тоже по всем, итог в каждой строке по единице, т.к. сами по себе строки уникальны. Но нужно только по совпадающим.
пример таблицы:
+----+-----------+------------+----------+------------+
| код | Тип |Название | Номер |Совпадения|
+----+-----------+------------+----------+------------+
| 1 | МВИ |Методика1 | 235619 | 2 |
| 2 | CB |Средство | 151542 | 1 |
| 3 | МВИ |Методика2 | 235964 | 2 |
| 4 | РД |Руководство| 1487 | 1 |
...
Как посчитать совпадения по Типу и вывести в эту же таблицу?

Проще надо быть: вот это - "После чего, при помощи VBA фильтрую запрос и вывожу в отчет" надо выбросить, а в запрос добавить where и твой фильтр
SELECT id_topic, COUNT(id_topic) FROM posts WHERE <бла-бла> GROUP BY id_topic;

и задать в соурс отчета
__Michelle
Дата: 24.11.2015 11:52:14
Rivkin Dmitry
Проще надо быть: вот это - "После чего, при помощи VBA фильтрую запрос и вывожу в отчет" надо выбросить, а в запрос добавить where и твой фильтр
SELECT id_topic, COUNT(id_topic) FROM posts WHERE <бла-бла> GROUP BY id_topic;

и задать в соурс отчета
Но ведь у ТС было
BM12
Пробовал что-то типа
SELECT id_topic, COUNT(id_topic) FROM posts GROUP BY id_topic;
Но, сделать группировку по одному из многих столбцов не выходит, можно только по всем.
То есть, нужно вывести и другие поля.
Тогда уж так
SELECT posts.*, N FROM posts INNER JOIN 
(SELECT Тип, Count(*) AS N FROM posts WHERE <условие фильтра> GROUP BY Тип) AS T2 
ON posts.Тип=T2.Тип 
WHERE <условие фильтра>
BM12
Дата: 16.12.2015 14:53:55
__Michelle
Добавьте условие фильтра DCount(..........., "Тип=""" & Тип & "" AND <условие фильтра>")

Забыл отписаться, так работает на ура. Спасибо.