Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.045 c
2-1157444822
Jenny
2006-09-05 12:27
2006.09.24
C чего начать написания сетевой базы данных


15-1157572013
Yegorchic
2006-09-06 23:46
2006.09.24
Помогите найти стих


2-1157350865
vegarulez
2006-09-04 10:21
2006.09.24
По поводу фискальных регистраторов.


2-1156982136
AlDun
2006-08-31 03:55
2006.09.24
Access Violation


15-1157088870
Ega23
2006-09-01 09:34
2006.09.24
С Днём рождения! 1 сентября





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский