Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.24;
Скачать: CL | DM;

Вниз

Создание отчета   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.041 c
15-1157546541
Mishenka
2006-09-06 16:42
2006.09.24
Где можно скачать библиотеку GraphicEx?


15-1156673575
Evgheni86
2006-08-27 14:12
2006.09.24
Ассемблер в Delphi


2-1157113761
Серге И
2006-09-01 16:29
2006.09.24
Помогите определить количество суббот????


15-1156979737
SerJaNT
2006-08-31 03:15
2006.09.24
Зацените мою программу


2-1157617630
newbie2
2006-09-07 12:27
2006.09.24
Как объект передать через интовую переменную?