Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];

Вниз

Перекрестный запрос   Найти похожие ветки 

 
Марат   (2004-06-07 14:28) [0]

Здравствуйте, мастера. Вопрос такой. На серевере (MSSQL) есть таблица. Для примера, чтобы долго не объяснять, пусть это будет список людей. Одно из полей характеризует тип людей. Пусть значения будут С,Ф,Х,М (Сангвиник,Флегматик,Холерик,Меланхолик). Задача такая необходимо создать таблицу, в которой будет показано кол-во С, кол-во Ф,кол-во Х, кол-во М и общее кол-во. До этого времени данная задача реализовывалась так: делался запрос по С-> создавалась временная таблица на сервере->записывались данные из запроса в эту таблицу...для Ф,Х,М то же самое. Затем из этих временных таблиц создавался обобщающий запрос и получалась итоговая таблица. Потом все временные таблицы удалялись. Дело в том, что раньше когда пользователей было мало и таблицы были небольшими такое дело "прокатывало", а сейчас данный отчет занимает очень много времени и ресурсов. Не могли бы вы подсказать какой-нибудь более действенный метод создания подобных отчетов.


 
Polevi ©   (2004-06-07 14:38) [1]

SELECT PeopleType, Count(*) FROM Table GROUP BY PeopleType


 
sniknik ©   (2004-06-07 14:58) [2]

если нужен "разворот"
SELECT Sum(CASE ISNULL(Fl1, "N") WHEN "N" THEN 1 END) AS NoValue,
      Sum(CASE Fl1 WHEN "C" THEN 1 END) AS "Сангвиников",
      ....
      Sum(CASE Fl1 WHEN "C" THEN 0
                   WHEN "Ф" THEN 0
                   WHEN "Х" THEN 0
                   WHEN "М" THEN 0
                   ELSE 1
          END) AS "Ошибочно задано типов"
FROM Table


 
Марат   (2004-06-08 08:17) [3]

Все понял, спасибо. Но эти варианты не позволяют добавить еще одно поле. Допустим, что есть еще одно поле, обозначающее М-мужчина, Ж-женщина, т.е. смысл тот же, но еще и с разбиением на М и Ж.


 
sniknik ©   (2004-06-08 08:22) [4]

почему это не позволяют? если это доп. поле добавь групировку по нему и разбиение по типам как показано. будет 2 строки, 1 для M другая для Ж.


 
Марат   (2004-06-08 09:16) [5]

Это конечно хорошо, но я же для примера привел мало "типов", на самом деле таких "типов" 48 штук, и по Вашему мне придется для каждого из них писать Case?


 
Лёлик   (2004-06-08 09:54) [6]

2 Марат   (08.06.04 09:16) [5]
Пока что да... Ну нет в MSSQL полноценных Pivot/Transform.
Ты погоди чуток, Билли грозится в Юконе это реализовать :-)


 
Марат   (2004-06-08 11:15) [7]

И что, кроме временных таблиц- выхода нет?


 
Polevi ©   (2004-06-08 11:22) [8]

такие вещи обычно делаются на клиенте, это вопрос отображения данных


 
Марат   (2004-06-08 12:58) [9]

Просто я в основном программировал на FoxPro, и там есть так называемые курсоры (как бы временные таблицы), неужели в Delphi нет чего-нибудь подобного?


 
Марат   (2004-06-08 13:16) [10]

А может это можно реализовать ч/з процедуру. Нет ли у кого-нибудь подобного примера? Я в процедурах ниже "Beginerа".


 
Polevi ©   (2004-06-08 20:11) [11]

[8]



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.044 c
3-1086330720
avgur
2004-06-04 10:32
2004.07.04
Помогите составить запрос.(я уже туплю)...


14-1086883702
DelphiN!
2004-06-10 20:08
2004.07.04
Изменение текстовых файлов в InstallSheild Expree 3.5


4-1085490669
миша
2004-05-25 17:11
2004.07.04
помогите в написании драйвера для нестанд устройства


14-1087058594
AZ
2004-06-12 20:43
2004.07.04
Upgrade hardware & setup Win98


6-1084104348
Shock
2004-05-09 16:05
2004.07.04
Удаленный доступ





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский