Оператор group by

Sergey
Дата: 14.02.2001 13:12:07
Проблема стоит давно, но решена довольно варварскими способами.Может кто предложит оригинальное решение?

Две таблицы
kart (tel int,otkl bit)
schet (tel int,summ money)

Запрос:
select kart.tel,kart.otkl,sum(summ) from kart left join schet on kart.tel=schet.tel where kart.tel=21 group by kart.tel
Выдает ошибку
Server: Msg 8120, Level 16, State 1, Line 1
Column 'kart.otkl' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

А если сделать так:
select kart.tel,kart.otkl,sum(summ) from kart left join schet on kart.tel=schet.tel where kart.tel=21 group by kart.tel,kart.otkl
То получим:
Server: Msg 252, Level 16, State 2, Line 1
Cannot group by a bit column.

А как быть если в запросе нужно одновременно получить битовое поле и агрегатное вычисление одновременно?
Glory
Дата: 14.02.2001 13:54:19
Может так подойдет ?

select kart.tel, kart.otkl, tmp1.summ FROM kart LEFT JOIN
(select schet.tel, sum(schet.summ) AS summ from schet where schet.tel=21 group by schet.tel) as tmp1
ON kart.tel = tmp1.tel
SergSuper
Дата: 14.02.2001 13:55:39
Вместо otkl пиши везде convert(int,otkl)
Sergey
Дата: 14.02.2001 14:01:43
Работает.
Спасибо.