2013-04-05 3 views
-3

Как добиться, как это в SQLServer

Coun (*), различны и столбец

select firstname,count(*) from 
(select distinct firstname,lastname,amount 
from emp) 
group by firstname 

Это работает в оракула.

+1

Всегда полезно сказать, какова ваша фактическая проблема. В этом случае, что происходит при запуске вашего запроса в SQL Server? Получаете ли вы ошибку или неправильные результаты или что именно происходит? – Pondlife

ответ

0

Я не понимаю, что вы пытаетесь сделать, но ваш запрос может быть записан следующим образом:

SELECT firstname, COUNT(*) 
FROM emp 
GROUP BY firstname; 

Или:

select firstname, count(*) 
from 
(
    select distinct firstname, lastname, amount 
    from emp 
) AS t 
group by firstname; 

Вы также можете использовать ключевое слово DISTINCT внутри COUNT; что-то вроде этого: COUNT(DISTINCT columnanme) вместо.


Или:

select firstname, lastname, amount, COUNT(*) 
from emp 
group by firstname, lastname, amount; 
+0

Не те, которые не то же самое. jim smith 10, jim smith 10 Первый выбор будет считать 2, а второй счет 1. – Paparazzi

+0

@Blam - Да, вы правы, они могут отличаться, но ОП не объяснил, чего он пытается достичь, поэтому я даю у него разные альтернативы. –

+0

Спасибо, это именно то, что мне нужно. Это второй запрос, который работает для меня. – SMITH

0

Вот пример из некоторых вещей, где я работаю, что делает в основном то же самое:

SELECT SYS_CSL, COUNT(SYS_CSL) 
FROM (
    SELECT SYS_CSL 
    FROM [VANTAGE_READ].CSL_SERV_RANK 
    WHERE AGNT_CSL = 0 
    AND (STOP_DTE_CSL > GETDATE() OR STOP_DTE_CSL IS NULL) 
    ) t1 GROUP BY sys_csl 
0

Вы должны назвать производной таблицы

select firstname, count(*) 
from (select distinct firstname,lastname,amount from emp) derived 
group by firstname 
Смежные вопросы