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)