Форум: "Начинающим";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
ВнизСоздание отчета Найти похожие ветки
← →
TimScorp © (2006-09-03 10:24) [0]Доброго времени суток!!!
Вопрос в следующем:
Имеется БД (Access), в ней имеется таблица с полями (Фамилия, Тип, Месяц)
Пример:
Иванов, 1, 9
Петров, 1, 9
Сидоров, 2, 9
Иванов, 2, 9
Иванов, 1, 9
Петров, 3, 9
Петров, 2, 8
Петров, 3, 9
нужно создать отчет за месяц сентябрь (9) и чтобы вывод был вида:
Фамилия Тип 1 Тип 2 Тип 3
Иванов 2 1 0
Петров 1 0 2
Сидоров 0 1 0
Как найти по месяцу при помощи SQL запроса знаю. А как в получившемся результате объединить одинаковые фамилии???
С уважением TimScorp
← →
Крокодил Гений (2006-09-03 12:23) [1]пиши в запросе слово DISTINCT
← →
zdm © (2006-09-03 16:51) [2]Если пешешь на Delphi,,, FastReport->DBCross
← →
TimScorp © (2006-09-03 21:23) [3]Спасибо
Попробую.
С уважением TimScorp.
← →
TimScorp © (2006-09-04 07:18) [4]Наверно я неправильно объяснил, попытаюсь по другому.
В таблице имеются поля: Fam (Фамилия), Дата (дд/мм/гггг), Тип (числовое значение равное 1, 2 или 3; при посещении предмета по математики - 1, по русскому - 2, литературе - 3). За один день один человек может посетить несколько предметов, и один и тот же предмет несколько раз.
Данные из таблицы:
Иванов 01/09/2006 1
Иванов 01/09/2006 1
Петров 01/09/2006 1
Иванов 01/09/2006 2
Сидоров 02/09/2006 3
Сидоров 03/09/2006 1
Петров 04/09/2006 3
Необходимо составить отчет сколько раз за месяц сентябрь каждый человек посетил соответствующие придметы чтобы получилась таблица вида:
Фамилия Математика Русский Литература
Иванов 2 1 0
Петров 1 0 1
Сидоров 1 0 1
С уважением TimScorp.
← →
TimScorp © (2006-09-04 10:58) [5]ап
← →
Сергей М. © (2006-09-04 11:07) [6]Кол-во предметов фиксировано ?
← →
sniknik © (2006-09-04 11:35) [7]а неважно, в таблице все одно нет признака "предмет" (по чему группировать) т.е. из показаной таблици желаемый результат невозможен, а если бы был то в аксес есть специальная каманда переворачивающая результаты групировки TRANSFORM ... PIVOT и ей все одно сколько в результате будет предметов для представления их столбцами.
← →
Сергей М. © (2006-09-04 11:42) [8]
> sniknik © (04.09.06 11:35) [7]
> в таблице все одно нет признака "предмет" (по чему группировать)
Ну почему же ?
По третьему полю как раз и группировать..
А уж какими средствами и как преобразовать полученный НД в кросс-отчет - это другой вопрос. При этом кросс-отчет может и не понадобиться, если число предметов фиксировано и заранее известно (в дан случае всего 3)
← →
sniknik © (2006-09-04 12:12) [9]а так это предмет... а считаем количиство этих предметов на человека...
сорри, недопонял.
← →
Anatoly Podgoretsky © (2006-09-04 13:25) [10]Сергей М. © (04.09.06 11:42) [8]
Зачем нужна группировка по месяцу, что бы узнать количество записей?
У него четкий кросс-отчет
← →
TimScorp © (2006-09-04 17:37) [11]Кол-во предметов фиксированно. Их всего 4.
Приведенная таблица выбрана по месяцу, вот теперь надо это както передать во FreeReport.
Иванов 01/09/2006 1
Иванов 01/09/2006 1
Петров 01/09/2006 1
Иванов 01/09/2006 2
Сидоров 02/09/2006 3
Сидоров 03/09/2006 1
Петров 04/09/2006 3
что бы получилась таблица вида:
Фамилия Математика Русский Литература
Иванов 2 1 0
Петров 1 0 1
Сидоров 1 0 1
Вот как сделать это объединение незнаю.
Кто нить поможет???
С уважением TimScorp.
← →
sniknik © (2006-09-04 21:12) [12]TRANSFORM Count(*)
SELECT Name AS [Фамилия], Count(*) AS [Всего]
FROM [Таблица]
GROUP BY Fam
PIVOT Choose([Тип], "1-Математика", "2-Русский","3-Литература")
← →
TimScorp © (2006-09-04 21:15) [13]Спасибо всем кто пытался помочь.
В Access"е этот запрос выглядит так:
SELECT Fam, (Select count (*) from Dat s1 where s1.Fam = s.Fam and TipD = 0) AS math, (Select count (*) from Dat s2 where s2.fam = s.fam and s2.tipd = 1) AS rus, (select count (*) from Dat s3 where s3.fam = s.fam and s3.tipd = 2) AS lit, (select count (*) from Dat s4 where s4.fam = s.fam and s4.tipd = 3) AS ist
FROM Dat AS s
GROUP BY fam;
ща попробую это в дельфин закинуть. если не получится обращусь.
С уважением TimScorp
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.04 c