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

Откуда:
Сообщений: 185
есть табличка типа

признакописаниеид
2343455
1343455
233355
244455
2343466
144466


надо получить типа, посчитать по признаку количество записей
признакописаниеид
1155
2355
1166
2166


select признак=
case
end,
описание,
ид
...

проблема - когда я ставлю count(описание)
от меня требуют все столбцы в case занести в group by или в агретн
думал так можно -
select признак=
case
end,
count(описание),
ид
...
group by признак, ид

но нет(
11 окт 13, 09:27    [14954653]     Ответить | Цитировать Сообщить модератору
 Re: функция count  [new]
Glory
Member

Откуда:
Сообщений: 104760
sum(case when then 1 end)
11 окт 13, 09:28    [14954657]     Ответить | Цитировать Сообщить модератору
 Re: функция count  [new]
Glory
Member

Откуда:
Сообщений: 104760
И вообще вот так

select признак,
ид,
count(*)...
group by признак, ид
11 окт 13, 09:31    [14954666]     Ответить | Цитировать Сообщить модератору
 Re: функция count  [new]
FreeFire
Member

Откуда:
Сообщений: 185
Glory
И вообще вот так

select признак,
ид,
count(*)...
group by признак, ид


так признак собирается по case по кучке условий поэтому его в group by и не загнать
11 окт 13, 09:34    [14954680]     Ответить | Цитировать Сообщить модератору
 Re: функция count  [new]
Glory
Member

Откуда:
Сообщений: 104760
FreeFire
ак признак собирается по case по кучке условий поэтому его в group by и не загнать

С чего это вдруг "не загнать" ?
11 окт 13, 09:36    [14954690]     Ответить | Цитировать Сообщить модератору
 Re: функция count  [new]
FreeFire
Member

Откуда:
Сообщений: 185
Glory
sum(case when then 1 end)

в результате получаем
3455
3266
11 окт 13, 09:36    [14954692]     Ответить | Цитировать Сообщить модератору
 Re: функция count  [new]
FreeFire
Member

Откуда:
Сообщений: 185
Glory
FreeFire
ак признак собирается по case по кучке условий поэтому его в group by и не загнать

С чего это вдруг "не загнать" ?


пишет - не допустимое имя столбца
11 окт 13, 09:37    [14954697]     Ответить | Цитировать Сообщить модератору
 Re: функция count  [new]
FreeFire
Member

Откуда:
Сообщений: 185
FreeFire
Glory
sum(case when then 1 end)

в результате получаем
3455
3266


точнее
7455
3266
11 окт 13, 09:39    [14954708]     Ответить | Цитировать Сообщить модератору
 Re: функция count  [new]
Glory
Member

Откуда:
Сообщений: 104760
FreeFire
FreeFire
пропущено...

в результате получаем
3455
3266


точнее
7455
3266

Это было неверное предложение
11 окт 13, 09:43    [14954726]     Ответить | Цитировать Сообщить модератору
 Re: функция count  [new]
Glory
Member

Откуда:
Сообщений: 104760
FreeFire
Glory
пропущено...

С чего это вдруг "не загнать" ?


пишет - не допустимое имя столбца

Разумеется. Ведь у вас не поле таблицы, а выражение.
11 окт 13, 09:43    [14954729]     Ответить | Цитировать Сообщить модератору
 Re: функция count  [new]
FreeFire
Member

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

так и как делать?(
и
всмысле не верное предложение?
а какое верное?))

или получив результат по case
признак описание ид
2 3434 55
1 3434 55
2 333 55
2 444 55
2 3434 66
1 444 66

записать в таблицу
и в новой таблице
тогда без case -
select признак,
ид,
count(*)...
group by признак, ид
11 окт 13, 09:48    [14954751]     Ответить | Цитировать Сообщить модератору
 Re: функция count  [new]
Glory
Member

Откуда:
Сообщений: 104760
FreeFire
так и как делать?(

Писать все выражение - как же еще
11 окт 13, 09:49    [14954757]     Ответить | Цитировать Сообщить модератору
 Re: функция count  [new]
FreeFire
Member

Откуда:
Сообщений: 185
Glory
FreeFire
так и как делать?(

Писать все выражение - как же еще


если не трудно -разжуйте плиз чайнику-самоучке)
что подразумеваете под
писать все выражения
11 окт 13, 09:54    [14954774]     Ответить | Цитировать Сообщить модератору
 Re: функция count  [new]
Glory
Member

Откуда:
Сообщений: 104760
FreeFire
что подразумеваете под
писать все выражения

Вместо имени вычисляемого столбца везде писать вычисляющее его выражение
11 окт 13, 09:55    [14954777]     Ответить | Цитировать Сообщить модератору
 Re: функция count  [new]
FreeFire
Member

Откуда:
Сообщений: 185
Glory
FreeFire
что подразумеваете под
писать все выражения

Вместо имени вычисляемого столбца везде писать вычисляющее его выражение


получилось
огромное человеческое спасибо!
11 окт 13, 10:01    [14954802]     Ответить | Цитировать Сообщить модератору
 Re: функция count  [new]
prog882
Guest
declare @t table (tp int, mm int, id int)

insert into @t 
select 2,3434,55 union all
select 1,3434,55 union all
select 2,333,55 union all
select 2,444,55 union all 
select 2,3434,66 union all
select 1,444,66

select tp,mm=count(mm),id
from @t
group by tp, id
11 окт 13, 12:25    [14955879]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить