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

Откуда: Москва
Сообщений: 274
Доброе время суток!
Есть задачка, в которой требуется суммировать только некоторые записи, другие записи суммировать не надо.

IF OBJECT_ID('tempdb..#t1') IS NOT NULL
DROP TABLE #t1
CREATE TABLE #t1( f1 CHAR(1), i1 int)
insert #t1 (f1, i1) values ('-', 1)
insert #t1 (f1, i1) values ('-', 2)
insert #t1 (f1, i1) values ('-', 3)

insert #t1 (f1, i1) values ('+', 4)
insert #t1 (f1, i1) values ('+', 5)
insert #t1 (f1, i1) values ('+', 6)

Решение:
select f1, sum( i1) from #t1 where f1 = '-' group by f1
union all
select f1, i1 from #t1 where f1<>'-'

На выходе получим:
- 6
+ 4
+ 5
+ 6

А есть ли другое решение данной задачки ?
8 авг 11, 16:51    [11087094]     Ответить | Цитировать Сообщить модератору
 Re: group by по условию  [new]
iap
Member

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

SUM(CASE) ?

А откуда такая "задачка"?
8 авг 11, 17:06    [11087187]     Ответить | Цитировать Сообщить модератору
 Re: group by по условию  [new]
SuperJur
Member

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

SUM(CASE) ?
не понял, извините...

Есть заявка покупателя, в которой может быть шкаф и отдельно дверь. После расчета заполняется таб часть по материалам, которые необходимо затратить на производство данных изделий.
И в печатной форме все материалы надо сложить по ID, но "Моно трек алюм." необходимо показывать каждой отдельной строчкой.
8 авг 11, 17:14    [11087248]     Ответить | Цитировать Сообщить модератору
 Re: group by по условию  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
SuperJur
iap,

SUM(CASE) ?
не понял, извините...
Да. Не врубился сразу.
А чем UNION не угодил?
8 авг 11, 17:32    [11087367]     Ответить | Цитировать Сообщить модератору
 Re: group by по условию  [new]
Glory
Member

Откуда:
Сообщений: 104751
А ПК как всегда нет ?
8 авг 11, 17:35    [11087388]     Ответить | Цитировать Сообщить модератору
 Re: group by по условию  [new]
SuperJur
Member

Откуда: Москва
Сообщений: 274
да я думал, может быть какое-то другое решение есть, которое мне в голову не приходит.
8 авг 11, 17:43    [11087471]     Ответить | Цитировать Сообщить модератору
 Re: group by по условию  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
SuperJur
да я думал, может быть какое-то другое решение есть, которое мне в голову не приходит.
С PK есть.
Но стоит ли?

Можно по условию группировать по PK или не группировать.
IF OBJECT_ID('tempdb..#t1') IS NOT NULL
DROP TABLE #t1
CREATE TABLE #t1( id int not null identity,f1 CHAR(1), i1 int)
insert #t1 (f1, i1) values ('-', 1)
insert #t1 (f1, i1) values ('-', 2)
insert #t1 (f1, i1) values ('-', 3)

insert #t1 (f1, i1) values ('+', 4)
insert #t1 (f1, i1) values ('+', 5)
insert #t1 (f1, i1) values ('+', 6)
SELECT MIN(f1)+CAST(SUM(i1)AS VARCHAR)
FROM #t1
GROUP BY CASE f1 WHEN '-' THEN f1 ELSE id END;
8 авг 11, 17:48    [11087534]     Ответить | Цитировать Сообщить модератору
 Re: group by по условию  [new]
SuperJur
Member

Откуда: Москва
Сообщений: 274
спасибо, Мастер!
9 авг 11, 12:48    [11090695]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить