Можем ли мы иметь динамическую группу по выражению в сервере SQL? - PullRequest
4 голосов
/ 18 мая 2011

У меня есть одна хранимая процедура ... с одним параметром: @subCustName.Этот хранимый процесс имеет один оператор выбора с group by custName, subCustName

Пример:

SELECT custName, subCustName,sum(membership)
FROM CUSTOMER_TABLE
GROUP BY
custName, subCustName

Если параметр @subCustName равен 'ALL', я не хочу группировать по subCustName.

Как мне это заболеть?

Заранее спасибо!

Ответы [ 2 ]

5 голосов
/ 18 мая 2011

Группа на выписке CASE?

SELECT
    CASE WHEN @custName = 'all' THEN '' ELSE custName END AS custName,
    subCustName, sum(membership)
FROM  
    CUSTOMER_TABLE
GROUP BY
    CASE WHEN @custName = 'all' THEN '' ELSE custName END, subCustName

Еще один пример моего ответа здесь: SQL Server 2005/2008 Оператор группировки By с параметрами без использования динамического SQL?

1 голос
/ 18 мая 2011

как то так

IF (@subCustName = 'ALL')
    SELECT custName, subCustName, 1
    FROM CUSTOMER_TABLE
ELSE
    SELECT custName, subCustName, sum(membership)
    FROM CUSTOMER_TABLE
    GROUP BY custName, subCustName

или вы можете построить запрос динамически

...