|
Оператор group by
|
|||
---|---|---|---|
#18+
Проблема стоит давно, но решена довольно варварскими способами.Может кто предложит оригинальное решение? Две таблицы 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. А как быть если в запросе нужно одновременно получить битовое поле и агрегатное вычисление одновременно? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2001, 13:12 |
|
Оператор group by
|
|||
---|---|---|---|
#18+
Может так подойдет ? 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2001, 13:54 |
|
Оператор group by
|
|||
---|---|---|---|
#18+
Вместо otkl пиши везде convert(int,otkl) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2001, 13:55 |
|
|
start [/forum/topic.php?fid=46&tid=1827346]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
23ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 243ms |
total: | 358ms |
0 / 0 |