Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сложный кросс таб отчет. Варианты реализации.


Kolan ©   (2008-04-20 13:58:00) 

Здравствуйте,
 Задача следующая.

Дано
Есть программа она может проводить измерение. Измерение— это некий заголовок (код, дата, итд) и набор параметров.

Данные об измерении храняться в БД так:

Таблица «Измерения»
КодИзмерения
Другие параметры

Таблица «Справочник параметров»
КодПараметра
Название
…

Таблица «Параметры»
КодИзмерения
КодПараметра
Значение


Так вот пользователю все это дело надо вывести в одну строку. Проблемма, еще в том, что с разными измерениями может быть связано разное кол-во параметров.
Пример:
В БД:

Таблица «Измерения»
КодИзмерения Другие параметры
 1            …
 2            …

Таблица «Справочник параметров»
КодПараметра Название
 1            R
 2            L
 3            C
…

Таблица «Параметры»
КодИзмерения КодПараметра Значение
 1            1           10
 1            2           20
 1            3           30
 2            1           11
 2            2           22


А вот что должен увидеть пользователь
КодИзмерения   R   L    C
 1           10  20  30
 2           11  22   —


Вопрос: Как можно реализовать сабж?
У меня есть варианты (я даже уже похожую ветку создавал…), но они не совсем годяться, поэтому я их не привожу.

ЗЫ
 Можно менять что угодно, схему БД напирмер.


Kolan   (2008-04-21 10:19:00) [1]

Получилось так:
SELECT
 A.MeasurmentID, A.DeviceID, A.OperationName,
 SUM(CASE A.ParamID WHEN 1 THEN A.ParamValue ELSE 0 END) AS Rd,
 SUM(CASE A.ParamID WHEN 2 THEN A.ParamValue ELSE 0 END) AS Cd,
 SUM(CASE A.ParamID WHEN 3 THEN A.ParamValue ELSE 0 END) AS Ld,
 SUM(CASE A.ParamID WHEN 4 THEN A.ParamValue ELSE 0 END) AS Cs,
 A.MeasurmentDateTime, A.Note
FROM
 (SELECT
   Measurments.MeasurmentID, Measurments.DeviceID,
   Measurments.OperationID, Operations.OperationName,
   Params.ParamID, ParamsDictionary.ParamName, Params.ParamValue,
   Measurments.MeasurmentDateTime, Measurments.Note
 FROM Measurments, Operations, Params, ParamsDictionary
 WHERE
      (Measurments.MeasurmentID = Params.MeasurmentID)
 AND  (Measurments.OperationID = Operations.OperationID)
 AND  (Params.ParamID = ParamsDictionary.ParamID))
 AS A
GROUP BY
 A.MeasurmentID, A.DeviceID, A.OperationName, A.MeasurmentDateTime, A.Note


А   SUM(CASE A.ParamID WHEN 4 THEN A.ParamValue ELSE 0 END) AS Cs,я наверно буду на клиенте генерить динамически…
Нормально получилось?


Kolan   (2008-04-21 09:52:00) [2]

> BOL — pivot table

SELECT Year,
   SUM(CASE Quarter WHEN 1 THEN Amount ELSE 0 END) AS Q1,
   SUM(CASE Quarter WHEN 2 THEN Amount ELSE 0 END) AS Q2,
   SUM(CASE Quarter WHEN 3 THEN Amount ELSE 0 END) AS Q3,
   SUM(CASE Quarter WHEN 4 THEN Amount ELSE 0 END) AS Q4
FROM Northwind.dbo.Pivot
GROUP BY Year
GO


Так примерно я и хотел сделать (У меня есть варианты, но они не совсем годяться © [0]), но совсем понятно было как такое сделать в даной ситуации.

То есть я делаю нужный джоин, а затем дин. SELECT. Так?


sniknik   (2008-04-20 23:17:00) [3]

> MS SQL Server 2000
BOL - pivot table


Kolan   (2008-04-20 23:05:00) [4]

> вкладки Decision Cube

А как компоненты называются? Мож переехали в другую вкладку…


Kolan   (2008-04-20 23:02:00) [5]

> А СУБД какая ?

MS SQL Server 2000


Сергей М,   (2008-04-20 22:16:00) [6]


> В BDS такой не наблюдается, где искать?


Понятия не имею.
В 7-ке пакет стандартно имеется.

А СУБД какая ?


Kolan   (2008-04-20 22:00:00) [7]

> Компоненты со вкладки Decision Cube ты, надо понимать, уже
> разглядывал в лупу ?

Нет, не слашал о такой, потому и спрашивал…

ЗЫ
 В BDS такой не наблюдается, где искать? Или это что-то нестандартное?


Сергей М,   (2008-04-20 18:36:00) [8]

Ничего особо сложного пока не просматривается.
Компоненты со вкладки Decision Cube ты, надо понимать, уже разглядывал в лупу ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо