Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > перекрестный запрос на SQL


Автор: Tark 26.12.2002, 09:34
у меня есть таблицы
Student c полями Name, Code и др.
Tests c полями Mark, Name,test_student_code и др.
они связаны Students.student_code = Tests.test_student_code

??????
можно ли в SQL запросе из Delphi (BDE, парадоксовcкие таблицы) сделать перекрестный запрос типа:
заголовки строк - имена студентов
заголовки столбцов - названия тестов
в таблице - оценки по соотв. тесту
если да, подскажите как или другой способ сделать такой перекрестный запрос

В Access я в конструкторе делаю его и получаю в SQL:
TRANSFORM Avg(Tests.test_mark) AS [Avg-test_mark]
SELECT Students.student_name
FROM Tasks INNER JOIN (Students INNER JOIN Tests ON Students.student_code = Tests.test_student_code) ON Tasks.task_code = Tests.test_task_code
GROUP BY Students.student_name
PIVOT Tasks.task_name;

когда я его переношу в дельф, он пишет Invalid use of keyword.(AS) код ошибки 12289 [$30] [$ 1]
и если меняю первую строку на TRANSFORM AVG(Tests.test_mark)
то пишет Capability not supported. код ошибки 10770 [$2A] [$12]
???????
кста, что это за значения в скобках? где можно найти описание ошибок?
поддерживается ли в SQL-92 TRANSFORM/PIVOT?

Автор: Medved 26.12.2002, 10:10
Насколько я знаю, конструкция TRANSFORM/PIVOT к сожалению не поддерживаются.... самый простой способ, сделать через временные таблицы...


Автор: Oleg 28.12.2002, 18:02
Я сам два месяца искал ответ на этот вопрос, можно написать
запрос размером на страничку(!), но в делфях намного проще использовать Desicion Cube, он для этого и предназначен.
Так что читайте теперь матчасть.

Однако если есть желание помучиться...

OSP_RUИздательство Открытые СистемыИТ-изданияWindows 2000 MagazineSQL Server MagazineМастерство разработкиДинамические перекрестные запросы.htm

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)