-
Здравствуйте, Задача следующая. ДаноЕсть программа она может проводить измерение. Измерение это некий заголовок (код, дата, итд) и набор параметров. Данные об измерении храняться в БД так: Таблица «Измерения»
КодИзмерения
Другие параметры
Таблица «Справочник параметров»
КодПараметра
Название
…
Таблица «Параметры»
КодИзмерения
КодПараметра
Значение Так вот пользователю все это дело надо вывести в одну строку. Проблемма, еще в том, что с разными измерениями может быть связано разное кол-во параметров. Пример: В БД: Таблица «Измерения»
КодИзмерения Другие параметры
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 — Вопрос: Как можно реализовать сабж? У меня есть варианты (я даже уже похожую ветку создавал
), но они не совсем годяться, поэтому я их не привожу. ЗЫ Можно менять что угодно, схему БД напирмер.
-
Ничего особо сложного пока не просматривается. Компоненты со вкладки Decision Cube ты, надо понимать, уже разглядывал в лупу ?
-
> Компоненты со вкладки Decision Cube ты, надо понимать, уже > разглядывал в лупу ?
Нет, не слашал о такой, потому и спрашивал
ЗЫ В BDS такой не наблюдается, где искать? Или это что-то нестандартное?
-
> В BDS такой не наблюдается, где искать?
Понятия не имею. В 7-ке пакет стандартно имеется.
А СУБД какая ?
-
> А СУБД какая ?
MS SQL Server 2000
-
> вкладки Decision Cube
А как компоненты называются? Мож переехали в другую вкладку
-
> MS SQL Server 2000 BOL - pivot table
-
> 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. Так?
-
Получилось так: 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, я наверно буду на клиенте генерить динамически
Нормально получилось?
|