#sql #reporting-services #sql-server-2016 #reportbuilder3.0 #ssrs-2016
Вопрос:
Давний пользователь Stackoverflow, но на самом деле никогда не задавал вопросов. В настоящее время я в тупике с запросом на отчет.
Что мне нужно сделать с построителем отчетов, так это отобразить данные на страницах, сгруппированных по трем годам, но вот в чем загвоздка: мне нужно, чтобы они вращались.
Я составил запрос, но он статичен:
SELECT distinct *, (dense_rank() over (order by [Year]) - 1) / 3 1 as [group]
FROM dwmy
Это отлично работает для группировки лет, когда мне также не нужно отображать прошлые годы. Чтобы дать вам представление о том, чего я пытаюсь достичь.
Итак, в текущем году это будет выглядеть так:
В 2022 году:
В 2023 году:
Как вы можете видеть, текущий год по-прежнему остается в первой группе, но с началом нового года он медленно уходит с первой страницы. Старые группы по-прежнему будут отображаться на старых страницах, поэтому пользователи все еще смогут видеть старые группы 2019, 2020, 2021 или 2020, 2021, 2022 годов.
Комментарии:
1. Если вы хотите изменить имена столбцов, вам нужно будет использовать динамический SQL.
2. Я не уверен, что понимаю, как будет выглядеть отчет. Будет ли он когда-либо показывать только три года, или он будет показывать три года как «представление данных в 2021 году», а затем на следующей странице три года из «представления данных в 2020 году» и т. Д.? Не могли бы вы предоставить некоторые примеры данных и ожидаемые результаты из тех же данных.
3. Я думаю, ты слишком много об этом думаешь.
SELECT *, (YEAR(GETDATE()) - [YEAR]) / 3 1...
4. Привет @AlanSchofield. Я приложил данные Excel, чтобы показать, чего именно я пытаюсь достичь. Это должен быть скользящий список инструкторов на 3 года подряд. Я подумал, что, возможно, вставка дубликатов для каждой группы может быть самым простым способом достижения этой цели, но если есть более простой способ отображения одних и тех же данных на разных страницах, я бы хотел это услышать. Спасибо.