SQL Сервер: разделите результаты столбца на основе значения из 2 других столбцов - PullRequest
0 голосов
/ 04 марта 2020

У меня есть такая таблица:

enter image description here

Я хочу отобразить такой отчет (я планирую сделать это в SSRS):

enter image description here

% рассчитывается на BG_SALES/TOTAL_SALES для текущего периода и предыдущего периода.

Как мне go делать это? Цени любую помощь .. спасибо

1 Ответ

1 голос
/ 04 марта 2020

Я бы сделал это в двух частях. Сначала я бы вычислил%, который вам требуется в SQL

Ниже я воспроизвел ваши образцы данных, а затем вернул их с добавленным%.

DECLARE @t TABLE (Category varchar(10), [Period] varchar(4), [Type] varchar(20), Amount float)
INSERT INTO @t VALUES
('TTL_SALES', 'CURR', 'CLOTHES', 1234000),
('TTL_SALES', 'PRE', 'CLOTHES', 1355657),
('TTL_SALES', 'CURR', 'ACCESSORIES', 34000),
('TTL_SALES', 'PRE', 'ACCESSORIES', 36000),
('BG_SALES', 'CURR', 'CLOTHES', 550000),
('BG_SALES', 'PRE', 'CLOTHES', 575000),
('BG_SALES', 'CURR', 'ACCESSORIES', 12000),
('BG_SALES', 'PRE', 'ACCESSORIES', 9000)

SELECT * FROM @t
UNION ALL
SELECT 
    'BG_%' as Category
    , t.[Period]
    , t.[Type]
    , b.Amount/t.Amount
FROM (SELECT * FROM @t WHERE Category = 'TTL_SALES') t
    JOIN (SELECT * FROM @t WHERE Category = 'BG_SALES') b
        ON t.[Period] = b.[Period] and t.[Type] = b.[Type]

Это дает нам следующие результаты

enter image description here

Я использовал этот запрос в качестве запроса набора данных в моем отчете. Я добавил матрицу с двумя группами строк, одну для Type и одну для Category Я добавил группу столбцов для Periodd Я установил ячейку [data] на Amount

Я добавил пробел строки в группе типов и удалил все ненужные столбцы.

Наконец, я изменил порядок сортировки для групп строк, чтобы результат получился, как и ожидалось.

Окончательный дизайн выглядел следующим образом ...

enter image description here

Еще одно быстрое изменение .... Я установил для свойства Format текстового поля Amount следующее ...

=IIF(Fields!Category.Value = "BG_%", "p2", "n0")

Это отформатирует строку BG_% в процентах с двумя десятичными знаками и любые другие строки как числа с тысячами разделителей и нулевыми десятичными разрядами.

Окончательный результат выглядит следующим образом.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...