SQL Server 2008中的表格结果的分组和计数选择

Dav*_*.id 2 sql t-sql group-by sql-server-2008

我有3个表(一个持有结果/投票,两个是查找表),如下所示:

票数

areaid    - which links to an area table to get area name
townid    - which links to a town table to get town name
votingyn  - if a person is voting or not (Y or N)
Run Code Online (Sandbox Code Playgroud)

考虑上表有以下测试数据:

1,2,'Y'
1,3,'N'
2,1,'Y'
3,3,'N'
Run Code Online (Sandbox Code Playgroud)

..等等,areaid倍数,townid倍数,当然还有Y或N如果投票

所以..我正在努力寻找获得以下结果的最有效方法:

由areaid分组,获得不同的townid数量以及多少Y或N票数(如果areadid和townid连接到名称的查找表):

area 1,     town1,       voting Y,   voting N
-------------------------------------------------
AREA 1      TOWN 1       23          12
AREA 2      TOWN 2       15          7
Run Code Online (Sandbox Code Playgroud)

不确定这是否足够清楚..任何帮助非常感谢!

小智 5

这样的事情应该这样做(未经测试):

SELECT a.Name AS 'Area', t.Name AS 'Town',
  SUM(CASE v.votingyn WHEN 'Y' THEN 1 ELSE 0 END) AS 'Yes'
  SUM(CASE v.votingyn WHEN 'N' THEN 1 ELSE 0 END) AS 'No'
FROM VOTES AS v
  JOIN TOWN AS t ON v.townid = t.id
  JOIN AREA AS a ON v.areaid = a.id
GROUP BY (a.Name, t.Name)
Run Code Online (Sandbox Code Playgroud)