Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вопрос по запросу  [new]
Потерянный пассажир
Guest
declare @tbl1 table( x int)
insert into @tbl1 values (1),(2)

declare @tbl2 table (a int,b int)
insert into @tbl2 values 
(1,1),
(2,2),
(4,2),
(7,2)

select sum( case when b in (select x from @tbl1) then a else -a end)
from @tbl2
group by b

Как избежать ошибки ?
16 ноя 16, 15:27    [19900458]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
Потерянный пассажир
Guest
declare @tbl1 table( x int)
insert into @tbl1 values (1),(2)

declare @tbl2 table (a int,b int)
insert into @tbl2 values 
(1,1),
(2,2),
(4,2),
(7,2)
select sum(s),b
from
(
select b,case when b in (select x from @tbl1) then a else -a end s
from @tbl2
)sq
group by b


Как-нибудь красивее чем так ...
16 ноя 16, 15:33    [19900479]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
Sybex
Member

Откуда: Moscow
Сообщений: 119
declare @tbl1 table( x int)
insert into @tbl1 values (1),(2)

declare @tbl2 table (a int,b int)
insert into @tbl2 values 
(1,1),
(2,2),
(4,2),
(7,2)

select sum(case when tbl1.x is not null then a else -a end)
from @tbl2 tbl2
     left join @tbl1 tbl1 on tbl1.x = tbl2.b
group by tbl2.b
16 ноя 16, 15:49    [19900558]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4539
Sybex, не... так можно получить много меньше...
16 ноя 16, 15:54    [19900585]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
Потерянный пассажир
Guest
2buser А чего не так то ? Похоже на правду ... правда некрасиво.
16 ноя 16, 16:00    [19900618]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Потерянный пассажир,

хорошее решение, что не так с ним?
16 ноя 16, 16:03    [19900628]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
Потерянный пассажир
Guest
2Владислав Колосов Казалось, что это можно сделать попроще, у меня в реально задаче условий больше, но ок - все пойдет, спасибо.
16 ноя 16, 16:05    [19900639]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4539
Потерянный пассажир,

declare @tbl1 table( x int)
insert into @tbl1 values (1), (2), (2)
16 ноя 16, 16:08    [19900643]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по запросу  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
buser,

авторский вариант как раз правильно отработает.
16 ноя 16, 16:20    [19900677]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить