Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 3 разных COUNT из одного SELECT  [new]
Вопрос Вопросов
Guest
Здравствуйте братцы! Вопрос в комментарии... Нет ли более короткого/красивого/быстрого решения, чем у меня сейчас?
DECLARE @t TABLE (v1 int, v2 int)
INSERT INTO @t VALUES (1,20),(2,20),(1,0),(2,1),(1,27),(2,25),(1,null),(2,null),(1,30),(2,null),(1,null),(2,null),(2,null),(2,4),(3,10),(3,0),(3,0),(3,null)

SELECT * FROM @t ORDER BY v1

SELECT v1, SUM(v2) AS v2sum, COUNT(v2) AS v2count, COUNT(*) AS v2count2,
/*как вот не использовать эту строчку ниже, а заменить ее чем нибудь аналогичным и более красивым?*/
(SELECT COUNT(*) FROM @t WHERE v1=t.v1 AND v2>0) AS v2count3
FROM @t t
GROUP BY v1
2 фев 17, 14:02    [20173559]     Ответить | Цитировать Сообщить модератору
 Re: 3 разных COUNT из одного SELECT  [new]
invm
Member

Откуда: Москва
Сообщений: 9405
SELECT v1, SUM(v2) AS v2sum, COUNT(v2) AS v2count, COUNT(*) AS v2count2,
COUNT(case when v2>0 then 1 end) AS v2count3
FROM @t t
GROUP BY v1
2 фев 17, 14:13    [20173638]     Ответить | Цитировать Сообщить модератору
 Re: 3 разных COUNT из одного SELECT  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20600
SUM(CASE WHEN v2>0 THEN 1 ELSE 0 END)
2 фев 17, 14:14    [20173642]     Ответить | Цитировать Сообщить модератору
 Re: 3 разных COUNT из одного SELECT  [new]
Вопрос Вопросов
Guest
ребят, огромное спасибо!!! так и знал что через case, даже написал, но ошибся в синтаксисе )))
Всем удачного 2017года!
2 фев 17, 14:25    [20173720]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить