Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 группировать в зависимости от параметра  [new]
last_man
Member

Откуда:
Сообщений: 40
Добрый день! работающим в выходные.
Такая ситуация. Группировка в зависимости от параметра.
Селект большой, в группировке куча полей.
Упрощенный пример такой
IF object_id('tempdb..#table') IS not NULL DROP TABLE #table
CREATE TABLE #table(link INT, qty NUMERIC(16,4), summa NUMERIC(16,2))
DECLARE @group INT = 0
SET @group = 1
SELECT @group
INSERT INTO #table
SELECT 1,1,12.0
UNION ALL
SELECT 1,0,24.5

SELECT * FROM #table

А теперь немного пофантазируем..
Возможно, что-то типа такого
SELECT link, SUM(qty) qty, CASE WHEN @group = 1 THEN SUM(summa) ELSE summa END
FROM #table
GROUP BY link, CASE WHEN @group = 1 THEN NULL ELSE summa END
?
20 сен 14, 13:20    [16599450]     Ответить | Цитировать Сообщить модератору
 Re: группировать в зависимости от параметра  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
last_man,

так можно:
SELECT link, SUM(qty) qty,
     CASE WHEN @group = 1 
              THEN SUM(summa) 
              ELSE CASE WHEN @group = 1
                        THEN NULL
                        ELSE summa
                    END
     END
FROM #table
GROUP BY link, CASE WHEN @group = 1 THEN NULL ELSE summa END
20 сен 14, 14:48    [16599641]     Ответить | Цитировать Сообщить модератору
 Re: группировать в зависимости от параметра  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2407
last_man,
как вариант - динамик
set @sql='Select ... from group by '

if @pole1 <> ''
set @sql = @sql + 'pole1'
...
exec (@sql)
22 сен 14, 11:32    [16603769]     Ответить | Цитировать Сообщить модератору
 Re: группировать в зависимости от параметра  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4831
last_man,

Почему вы не хотите динамически собрать запрос ?
SET @Query = N'SELECT ....
GROUP BY '; 

IF ... 
SET @Query = @Query  + 'Поле1'
...

EXEC @Query 
22 сен 14, 14:52    [16605257]     Ответить | Цитировать Сообщить модератору
 Re: группировать в зависимости от параметра  [new]
last_man
Member

Откуда:
Сообщений: 40
a_voronin,
автор
Почему вы не хотите динамически собрать запрос ?


не знаю, просто мне не встречалось применение командного скуэля в отчетных формах.

Спасибо за рекомендации, нужно будет применить и протестить.
24 сен 14, 14:31    [16616057]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить