Конференция "Основная" » Сложный кросс таб отчет. Варианты реализации.
 
  • Kolan © (20.04.08 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   —



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

    ЗЫ
     Можно менять что угодно, схему БД напирмер.
  • Сергей М, (20.04.08 18:36) [1]
    Ничего особо сложного пока не просматривается.
    Компоненты со вкладки Decision Cube ты, надо понимать, уже разглядывал в лупу ?
  • Kolan © (20.04.08 22:00) [2]
    > Компоненты со вкладки Decision Cube ты, надо понимать, уже
    > разглядывал в лупу ?

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

    ЗЫ
     В BDS такой не наблюдается, где искать? Или это что-то нестандартное?
  • Сергей М, (20.04.08 22:16) [3]

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


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

    А СУБД какая ?
  • Kolan © (20.04.08 23:02) [4]
    > А СУБД какая ?

    MS SQL Server 2000
  • Kolan © (20.04.08 23:05) [5]
    > вкладки Decision Cube

    А как компоненты называются? Мож переехали в другую вкладку…
  • sniknik © (20.04.08 23:17) [6]
    > MS SQL Server 2000
    BOL - pivot table
  • Kolan © (21.04.08 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 © (21.04.08 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,

    я наверно буду на клиенте генерить динамически…
    Нормально получилось?
 
Конференция "Основная" » Сложный кросс таб отчет. Варианты реализации.
Есть новые Нет новых   [134487   +1][b:0][p:0.002]