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

Откуда: Уфа
Сообщений: 289
Добрый день.
Есть таблица test:

Name:
привет
privet
привет55
пока


Какой нужно написать, запрос, чтобы получить:
Name:    Qnt:
Привет    3
Пока       1


Если я напишу что-то вроде:
select 
   Name, 
   count(*) as kol
from test 
group by Name


я получу результатом все по единичке, если написать что-то вроде:
select
'Privet' as prv,
sum (kol) as kol
from 
(select 
   Name, 
   count(*) as kol
from test 
where (name like '%pr%') or (name like N'%пр%')
group by Name) x
union all
select
'Poka' as prv,
sum (kol) as kol
from 
(select 
   Name, 
   count(*) as kol
from test 
where (name like '%pok%') or (name like N'%пок%')
group by Name) x


я получаю:
Privet   3
Poka    1


А в итоге мне нужно получить вывод таблицы вот в таком виде:

Name:   Privet:    Poka:
встречи   3         1


подскажите пожалуйста...
31 июл 14, 17:16    [16383141]     Ответить | Цитировать Сообщить модератору
 Re: COUNT в запросе нужно сгруппировать по параметрам  [new]
MotoCV
Member

Откуда: Уфа
Сообщений: 289
Пожалуйста проигнорируйте вот это:

MotoCV
Какой нужно написать, запрос, чтобы получить:
Name:    Qnt:
Привет    3
Пока       1



Мне нужен ответ на вопрос как получить вывод в таком виде
MotoCV

А в итоге мне нужно получить вывод таблицы вот в таком виде:

Name:   Privet:    Poka:
встречи   3         1


31 июл 14, 17:20    [16383159]     Ответить | Цитировать Сообщить модератору
 Re: COUNT в запросе нужно сгруппировать по параметрам  [new]
dma_caviar
Member

Откуда: https://itproduct.ru
Сообщений: 2361
PIVOT\UNPIVOT
31 июл 14, 17:26    [16383184]     Ответить | Цитировать Сообщить модератору
 Re: COUNT в запросе нужно сгруппировать по параметрам  [new]
MotoCV
Member

Откуда: Уфа
Сообщений: 289
а как можно pivot использовать вместе с
select union all select

можно поподробнее на моем примере?
31 июл 14, 17:31    [16383198]     Ответить | Цитировать Сообщить модератору
 Re: COUNT в запросе нужно сгруппировать по параметрам  [new]
MotoCV
Member

Откуда: Уфа
Сообщений: 289
тут даже вопрос не в PIVOTе, а в том как заставить count() считать что "привет", "privet", "privet55" - это одно и то же и не разбивать на отдельные строки
31 июл 14, 17:35    [16383221]     Ответить | Цитировать Сообщить модератору
 Re: COUNT в запросе нужно сгруппировать по параметрам  [new]
dma_caviar
Member

Откуда: https://itproduct.ru
Сообщений: 2361
MotoCV,

ну ппц вы задачу ставите, вроде было очеидно что нужен разворот таблицы))
31 июл 14, 17:36    [16383223]     Ответить | Цитировать Сообщить модератору
 Re: COUNT в запросе нужно сгруппировать по параметрам  [new]
Konst_One
Member

Откуда:
Сообщений: 11623
Count(case when [Name] IN('привет', 'privet', 'privet55') then 1 else 0 end)
31 июл 14, 17:36    [16383226]     Ответить | Цитировать Сообщить модератору
 Re: COUNT в запросе нужно сгруппировать по параметрам  [new]
dma_caviar
Member

Откуда: https://itproduct.ru
Сообщений: 2361
MotoCV
тут даже вопрос не в PIVOTе, а в том как заставить count() считать что "привет", "privet", "privet55" - это одно и то же и не разбивать на отдельные строки

сделайте справочник слов синонимов, отберите все во временную таблицу с учетом синонимов, и потом уже сделате count
31 июл 14, 17:37    [16383227]     Ответить | Цитировать Сообщить модератору
 Re: COUNT в запросе нужно сгруппировать по параметрам  [new]
dma_caviar
Member

Откуда: https://itproduct.ru
Сообщений: 2361
Konst_One
Count(case when [Name] IN('привет', 'privet', 'privet55') then 1 else 0 end)


тогда можно еще проще))

select 'встречи' as Name, 3 as Privet, 1 as Poka
31 июл 14, 17:38    [16383234]     Ответить | Цитировать Сообщить модератору
 Re: COUNT в запросе нужно сгруппировать по параметрам  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
ага + афтор сколько у вас варинтов написания привет ? Просто интересно
select Name, count(*) from test group by Name 
что дает ?
31 июл 14, 17:53    [16383306]     Ответить | Цитировать Сообщить модератору
 Re: COUNT в запросе нужно сгруппировать по параметрам  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 266
:)
Count(case when [Name] like '%привет%' or [Name] like '%privet%' then 1 else 0 end)
31 июл 14, 17:58    [16383329]     Ответить | Цитировать Сообщить модератору
 Re: COUNT в запросе нужно сгруппировать по параметрам  [new]
faig
Member

Откуда: Chicago ,IL
Сообщений: 146
If that was just an example of more complex scenarios you may need to explore TRANSLATE (to convert russian letters to correspondent english letters) and use SOUNDEX function in your group clause. Avoid hard codding.
31 июл 14, 22:39    [16384455]     Ответить | Цитировать Сообщить модератору
 Re: COUNT в запросе нужно сгруппировать по параметрам  [new]
MotoCV
Member

Откуда: Уфа
Сообщений: 289
Спасибо всем за помощь и за иронию :) Посчитал необходимые значения отдельными функциями и вывел selectом
1 авг 14, 12:33    [16386525]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить