2013-04-05 34 views
-3

如何完成这样的在SQLSERVER

COUN(*),不同的和列

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

这工作在oracle中。

+1

说出你的实际问题是很有帮助的。在这种情况下,当您在SQL Server中运行查询时会发生什么?你是否有错误,或错误的结果,或者发生了什么? – Pondlife 2013-04-05 22:10:36

回答

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; 

您也可以使用关键字DISTINCTCOUNT之内;像这样:COUNT(DISTINCT columnanme)


或者:

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

不是那些不一样。吉姆史密斯10,吉姆史密斯10第一选择将计数2和第二计数1. – Paparazzi 2013-04-05 22:21:04

+0

@布拉姆 - 是的,你是对的,他们可能是不同的,但OP没有解释他想达到什么,所以我给他有不同的选择。 – 2013-04-05 22:23:37

+0

谢谢,这正是我所需要的。这是第二个查询适用于我。 – SMITH 2013-04-05 22:24:45

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