我有一个表人口
Stateid StateName Year Popution
01 xx 2008 200000
02 xy 2008 400000
01 xx 2009 500000
02 xy 2009 900000
因此需要结果每个州2009年的总人口?
Expected Result xx:700000,xy:1300000
如何获得此结果。任何人请建议我?
答案 0 :(得分:0)
这样的东西会给你你想要的东西。
select statename, sum(population) thesum
from population
maybe a where clause
group by statename
但是,你说你想要的是非常奇怪的。对于州xx,2009年的50000人可能包括2008年居住在那里的许多人。正如你所描述的那样,这个问题意味着你要对这些人进行两次计算。
答案 1 :(得分:0)
要总结在给定年份的所有年份中相同州的所有人口价值,您可以尝试这样做:
DECLARE @year NVARCHAR(4)
SET @year = '2009'
SELECT Stateid, StateName, SUM(Popution) FROM
(
SELECT Stateid, StateName, Popution FROM Population WHERE Year <= @year
) tmp
GROUP BY Stateid, Statename
这将在内部查询中选择一年前或包括所需年份的所有记录。然后,每个州建立总和。
实际上,如果您的数据如下,则只会看到此内容:
Stateid StateName Year Popution
01 xx 2008 200000
02 xy 2008 400000
01 xx 2009 500000
02 xy 2009 900000
01 xx 2010 600000
02 xy 2010 1000000
然后,如果你评估到2009年,你就会得到你期望的数字。
01 xx 700000
02 xy 1300000
2010年你会得到
01 xx 1300000
02 xy 2300000
答案 2 :(得分:0)
尝试
SELECT
[StateName], sum([Popution])
FROM Populations
GROUP BY [StateName]
ORDER BY [StateName];
哪个给出了
STATENAME COLUMN_1 xx 700000 xy 1300000
答案 3 :(得分:-2)
您的问题是错误的,您将无法获得2009年的xx:700000和xy = 1300000的结果。但如果您在2009年拥有多个值,请使用以下查询。
CREATE表测试 (stateid INT,statename VARCHAR(500),yeard int,POPULATION INT)
选择* FROM测试
SELECT statename,SUM(POPULATION) 从测试 在哪里= 2009年 GROUP BY州名
此致 穆萨