需要SQL查询以根据计数基于条件获取数据

时间:2014-06-18 08:09:26

标签: sql sql-server-2008

我有一个名为areadetailstate的表格。

areadetail包含以下列:

State Id
Area Id-rural(1) or urban(2)
Population

示例数据:

Stateid                AreaID                    Population
1                        1                           10
1                        2                           20
1                        2                           20
2                        1                           10
2                        2                           20
3                        1                           10 

State表包含以下列:

State name and state id

示例数据:

State Id                    StateName
1                             Delhi
2                             Mumbai
3                             Jaipur

现在我需要一个查询来显示

之类的记录
State name      Rural               Urban
------------------------------------------
Delhi            3                   2
Mumbai           1                   1
Jaipur           1                   0

2 个答案:

答案 0 :(得分:1)

我猜AreaID=1表示RURAL2表示URBAN然后尝试此查询:

SELECT 
  MAX(s.StateName),
  SUM(CASE WHEN ad.AreaID=1 THEN ad.Population ELSE 0 END) as Rural ,
  SUM(CASE WHEN ad.AreaID=2 THEN ad.Population ELSE 0 END) as Urban


FROM State as s
LEFT JOIN areadetail as ad on s.Stateid=ad.Stateid
GROUP BY s.Stateid

SQLFiddle demo

答案 1 :(得分:0)

选择姓名,农村,城市

这 (

选择状态,总和(区域= 1然后1其他0结束的情况)'农村',总和(区域= 2然后1的情况)  其他0结束)' Urban'

<#>来自#Area

按州分组

)A 加入州S. 在A.state = S.state