2015-07-21 37 views
-3

我想获得一个列表,其中包含不同国家的名称,明确不同国家的雇员人数。我无法在SQL服务器中使用每个循环。有什么方法可以实现我想要的吗?我可以使用哪个国家='输入国家',但我不想为每个国家都这样做。SQL服务器为每个不同的金额

Select distinct Country, 
    SUM(Test.[Number of Manager]) over() AS 'Number of Parts Staff/Manager', 
    Count(Test.[Name]) over() AS 'Number of Test' 

From Test; 
+2

你需要'GROUP BY Country' – DavidG

+0

你为什么要投下来的问题很多简单的方法?这背后的逻辑是什么? – el94

+0

我没有downvote它,但我看到很多'rtfm'问题得到downvoted,也许这是原因... –

回答

2

不要使用DISTINCT,相反,你应该GROUP BY

Select Country, 
     SUM([Number of Manager]) AS 'Number of Parts Staff/Manager', 
     Count([Name]) AS 'Number of Test' 
From Test 
GROUP BY Country 
+1

错误消息可能来自上面显示的SQL。请确保你改变了你的'SUM'和'COUNT'行来匹配。所以删除'OVER()'部分。 – DavidG

0

我认为你正在寻找group by

SELECT Country, 
     SUM([Number of Manager]) AS 'Number of Parts Staff/Manager', 
     Count([Name]) AS 'Number of Test' 
FROM Test 
GROUP BY Country; 
0
SELECT Country, 
    SUM(Test.[Number of Manager]) OVER() AS 'Number of Parts Staff/Manager', 
    COUNT(Test.[Name]) OVER() AS 'Number of Test' 
FROM Test 
GROUP BY Country 
0

您可以通过使用做到这一点PATITION BY

Select Country, 
    SUM(Test.[Number of Manager]) over (partition by Country order by Country) AS 'Number of Parts Staff/Manager', 
    Count(distinct Test.[Name]) over (partition by Country Country) AS 'Number of Test' 

From Test; 

或使用Group By COUNTRY

select country,Count(distinct Test.[Name]) AS 'Number of Test', SUM(Test.[Number of Manager]) AS 'Number of Parts Staff/Manager' from test 
group by country