1 (edited by simon100500 2016-06-11 20:23:55)

Topic: Как сделать сортировку столбцов по суммарному значению?

Здравствуйте! Подскажите, есть ли решение такой задачки?

Есть таблица

рубрика   средство   степень
-----------------------------
рубрика1  ars        1
рубрика1  bell       1
рубрика1  lyc        4
рубрика2  ars        2
рубрика2  lyc        2
-----------------------------

из которой нужно получить такую  (столбцы нужно сортировать по убыванию общей суммы):

          lyc  ars  bell   
-------------------------------
рубрика1  4    1    1
рубрика2  2    2    
-------------------------------
итог      6    3    1

Я передаю таблицу в FastReport-отчёт, через SQL-запрос. В отчёте сделал табличку через DB Cross-tab object, но никак не отсортировать по итоговой сумме (см. вложение).


Подскажите, это лучше сделать как-то через настройку отчёта или сделать запрос?

Прилагаю тестовый проект: https://yadi.sk/d/rOJufjyWsRfVS

Буду благодарен за совет!

Post's attachments

Attachment icon орпорп.JPG 19.07 kb, 252 downloads since 2016-06-11 

Re: Как сделать сортировку столбцов по суммарному значению?

Приветствую,


Попробовал, но к сожалению не смог решить эту задачу. Скорей всего необходимо в SQL запросе сделать сортировку по вычисляемому полю, который высчитывает сумму по средствам, как в Cross таблице отчета.

Dmitry.

3 (edited by simon100500 2016-06-17 07:23:42)

Re: Как сделать сортировку столбцов по суммарному значению?

Спасибо за совет! Тоже появлялись такие мысли, они оказались работоспособными.
В редакторе отчётов хорошо работает такая таблица:

рубрика   средство   степень   сумма
--------------------------------------
рубрика1  ars        1         3
рубрика1  bell       1         1
рубрика1  lyc        4         6
рубрика2  ars        2         3
рубрика2  lyc        2         6
--------------------------------------

В кросс-таблицу в "столбцы" добавляю столбцы "сумма", потом "степень". Получается нужная сортировка.

Не знал как сделать вышеуказанную таблицу одним запросом, поэтому создаю таблицу такого плана

средство   сумма
------------------
ars        3
bell       1
lyc        6
------------------

запросом

INSERT INTO posumme (id_sluchai,sredstvo,summa) 
SELECT sluchai.id, sredstva.sredstvo, sum(sredstva.stepen) 
FROM analiz 
LEFT OUTER JOIN rubrics ON analiz.id_rubrics=rubrics.id 
LEFT OUTER JOIN sredstva ON sredstva.id_rubrics=rubrics.id 
LEFT OUTER JOIN sluchai ON analiz.id_sluchai=sluchai.id 
GROUP BY sluchai.id,sredstva.sredstvo

а её уже подключаю когда делаю общий запрос в отчёт.

SELECT rubrics.rubrika as 'рубрика', sredstva.sredstvo as 'средство', sredstva.stepen as 'степень', posumme.summa as 'сумма'
FROM rubrics
LEFT OUTER JOIN analiz ON analiz.id_rubrics=rubrics.id
LEFT OUTER JOIN sredstva ON sredstva.id_rubrics=rubrics.id
LEFT OUTER JOIN posumme ON posumme.sredstvo=sredstva.sredstvo
WHERE analiz.id_sluchai='{ID_sluchai}' and posumme.id_sluchai='{ID_sluchai}'

Подскажите, пожалуйста, ещё: как скриптом передать значение в TableGrid? Например, делаю SQLExecute по OnClick. Как результат передать в TableGrid?

Post's attachments

Attachment icon реп_получ.PNG 7.09 kb, 362 downloads since 2016-06-17 

Re: Как сделать сортировку столбцов по суммарному значению?

simon100500
Чтобы вывести результат SQL запроса в TableGrid, воспользуйтесь кнопкой с действием "SQL запрос"

Dmitry.