У меня такой запрос в Sql Server 2008:
Select ColumnA, ColumnB, ColumnC, ColumnD, sum(value1), sum(value2), sum(value3)...
from Table
group by ColumnA, ColumnB, ColumnC, ColumnD
Что мне нужно сделать, это изменить порядок столбцов в строке GroupBy
в соответствии с требованиями пользователя. Например, Пользователь1 хочет видеть результаты: group by ColumnB, ColumnA, ColumnD, ColumnC
, где Пользователь2 хочет видеть результаты: group by ColumnD, ColumnA, ColumnC, ColumnB
. По сути, порядок в сегменте groupby должен быть динамическим в зависимости от выбора пользователя. Есть 24 потенциальных заказа ...
Как лучше всего с этим справиться?
Я пришел с такой идеей:
declare @groupbyOrder int = 20 --let's say 20
Select ColumnA, ColumnB, ColumnC, ColumnD, sum(value1), sum(value2), sum(value3)...
from Table
group by (case when @groupbyOrder = 1 then ColumnA, ColumnB, ColumnC, ColumnD)
...
when @groupbyOrder = 20 then ColumnD, ColumnB, ColumnC, ColumnA)
...)
Но это не сработало, и я не думаю, что это хороший способ решить проблему. Любой совет будет оценен.