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

Вниз

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

 
Kolan ©   (2008-04-20 13:58) [0]

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

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

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

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

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

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


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

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

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

Таблица «Параметры»
КодИзмерения КодПараметра Значение
 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   —


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

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


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

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


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

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

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

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


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


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


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

А СУБД какая ?


 
Kolan ©   (2008-04-20 23:02) [4]

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

MS SQL Server 2000


 
Kolan ©   (2008-04-20 23:05) [5]

> вкладки Decision Cube

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


 
sniknik ©   (2008-04-20 23:17) [6]

> MS SQL Server 2000
BOL - pivot table


 
Kolan ©   (2008-04-21 09:52) [7]

> 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. Так?


 
Kolan ©   (2008-04-21 10:19) [8]

Получилось так:
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, я наверно буду на клиенте генерить динамически&#133
Нормально получилось?



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

Текущий архив: 2009.03.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
9-1178217912
NDF
2007-05-03 22:45
2009.03.29
Помогите с DelphiX


15-1232851838
Vjik
2009-01-25 05:50
2009.03.29
Очень важные сообщения


1-1208355038
KSergey
2008-04-16 18:10
2009.03.29
Int64 и Integer Overflow


4-1207322584
engine
2008-04-04 19:23
2009.03.29
TerminateProcess


2-1233662510
seferot
2009-02-03 15:01
2009.03.29
Удаление записи типа record.