id1 id2 year State Gender
==== ====== ====== ===== =======
1 A 2008 ca M
1 B 2008 ca M
3 A 2009 ny F
3 A 2008 ny F
4 A 2009 tx F
select
state, gender, [year],
count (distinct(cast(id1 as varchar(10)) + id2))
from
tabl1
group by state, gender, [year]
我可以通过状态查找不同的计数。 现在我需要通过明智的城市找到不同的计数。像CA - 3个城市.. sfo,la,sanjose。我有一个查找表,我可以找到状态和城市。计算加入两个表格时的不同计数
table2 - city
====
cityid name
==== ====
1 sfo
2 la
3 sanjose
table 3 - state
====
stateid name
==== ====
1 CA
2 Az
table 4 lookup state city
====
pk_cityId pk_state_id
1 1
2 1
select state,city,gender, [year],
count (distinct(cast(id1 as varchar(10)) + id2))
from
tabl1 p
group by state, gender, [year],city
此查询找到城市和州名称。
select c.city,s.state from city_state sc
inner join (select * from state)s on sc.state_id = s.state_id
inner join (select * from city)c on sc.city_id = c.city_id
我做类似这样的查询中使用的查找表,但问题是,我得到整个国家的重复计数和计数相同的,则重复在该州各城市。例如:对于ca:10的计数,城市的计数应该像La - 5,sanjose - 4,sfo-1。
但用我的查询得到sfo - 10,la-10,sanjose-10 ..我无法找到较低级别的计数。任何帮助,将不胜感激。
更新: 我已更新查询和查询表。
拉斯维加斯,CA?嗯... – 2010-10-05 09:47:41
我的坏...我会改变它:) – jero 2010-10-05 16:54:06
ID1在第一个表中代表什么?这是城市ID吗? – 2010-10-05 18:45:37