2013-06-26 4 views
0

У меня есть следующий данные:SSRS заказ гистограммы по значению

----------------- 
Name|Value|Type 
----------------- 
A | 110 | Daily 
----------------- 
A | 770 | Weekly 
----------------- 
B | 150 | Daily 
----------------- 
B | 700 | Weekly 
----------------- 
C | 120 | Daily 
----------------- 
C | 840 | Weekly 

В гистограмме SSRS, имя будет ось X, то значение будет ось Y, тип будет серией.

Что мне нужно гистограмма будет сортировать по убыванию недельной стоимости, поэтому ожидаемый порядок должен быть:

C Weekly 
C Daily 
A Weekly 
A Daily 
B Weekly 
B Daily 

Как сделать это? В запросе или в настройке диаграммы SSRS?

ответ

0

Вы можете использовать ROW_NUMBER() генерировать порядковый номер для каждого Name на основе Value для Weekly типа и который затем станет основой того, как записи будут отсортированы.

WITH records 
AS 
(
    SELECT Name, 
      ROW_NUMBER() OVER (ORDER BY Value DESC) rn 
    FROM tableName 
    WHERE Type = 'Weekly' 
) 
SELECT a.* 
FROM tableName a 
     INNER JOIN records b 
      ON a.Name = b.Name 
ORDER BY b.rn, a.Type DESC 

ВЫВОД

╔══════╦═══════╦════════╗ 
║ NAME ║ VALUE ║ TYPE ║ 
╠══════╬═══════╬════════╣ 
║ C ║ 840 ║ Weekly ║ 
║ C ║ 120 ║ Daily ║ 
║ A ║ 770 ║ Weekly ║ 
║ A ║ 110 ║ Daily ║ 
║ B ║ 700 ║ Weekly ║ 
║ B ║ 150 ║ Daily ║ 
╚══════╩═══════╩════════╝ 
+0

удивительно быстрый и хороший результат ... – unruledboy

+1

вы также можете сделать это без использования КТР, http://www.sqlfiddle.com/#! 6/889f0/2 –