Форум: "Основная";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];
ВнизСложный кросс таб отчет. Варианты реализации. Найти похожие ветки
← →
Kolan © (2008-04-20 13:58) [0]Здравствуйте,
Задача следующая.
Дано
Есть программа она может проводить измерение. Измерение — это некий заголовок (код, дата, итд) и набор параметров.
Данные об измерении храняться в БД так:Таблица «Измерения»
КодИзмерения
Другие параметры
Таблица «Справочник параметров»
КодПараметра
Название
…
Таблица «Параметры»
КодИзмерения
КодПараметра
Значение
Так вот пользователю все это дело надо вывести в одну строку. Проблемма, еще в том, что с разными измерениями может быть связано разное кол-во параметров.
Пример:
В БД:Таблица «Измерения»
КодИзмерения Другие параметры
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 —
Вопрос: Как можно реализовать сабж?
У меня есть варианты (я даже уже похожую ветку создавал…), но они не совсем годяться, поэтому я их не привожу.
ЗЫ
Можно менять что угодно, схему БД напирмер.
← →
Сергей М, (2008-04-20 18:36) [1]Ничего особо сложного пока не просматривается.
Компоненты со вкладки Decision Cube ты, надо понимать, уже разглядывал в лупу ?
← →
Kolan © (2008-04-20 22:00) [2]> Компоненты со вкладки Decision Cube ты, надо понимать, уже
> разглядывал в лупу ?
Нет, не слашал о такой, потому и спрашивал…
ЗЫ
В 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
А как компоненты называются? Мож переехали в другую вкладку…
← →
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,
я наверно буду на клиенте генерить динамически…
Нормально получилось?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.049 c