Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2008中表格结果的分组和计数选择_Sql_Sql Server 2008_Tsql_Group By - Fatal编程技术网

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

SQL Server 2008中表格结果的分组和计数选择,sql,sql-server-2008,tsql,group-by,Sql,Sql Server 2008,Tsql,Group By,我有3个表(一个包含结果/投票,两个为查找表),如下所示: 投票 考虑上表具有以下测试数据: 1,2,'Y' 1,3,'N' 2,1,'Y' 3,3,'N' 。。以此类推,areaid倍数,townid倍数,当然还有Y或N,如果投票的话 所以。。我试图找到最有效的方法来获得以下结果: 按areaid分组,获得不同的townid计数以及Y或N投票数 类似于(如果areadid和townid连接到名称的查找表): 我不确定这是否足够清楚。。非常感谢任何帮助 像这样的东西应该可以(未经测试): 对于

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

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

1,2,'Y'
1,3,'N'
2,1,'Y'
3,3,'N'
。。以此类推,areaid倍数,townid倍数,当然还有Y或N,如果投票的话

所以。。我试图找到最有效的方法来获得以下结果:

按areaid分组,获得不同的townid计数以及Y或N投票数 类似于(如果areadid和townid连接到名称的查找表):


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

像这样的东西应该可以(未经测试):


对于包含的测试数据,能否给出一个示例结果(暂时忽略查找表)。尽管如此,我对这个设计还是有点不安……或者(用更多的语法修饰):
COUNT(NULLIF(v.votingyn,'N'))作为Yes,COUNT(NULLIF(v.votingyn,'Y'))作为No
。谢谢!忘记您可以使用case/when语句求和。。。非常有用!
1,2,'Y'
1,3,'N'
2,1,'Y'
3,3,'N'
area 1,     town1,       voting Y,   voting N
-------------------------------------------------
AREA 1      TOWN 1       23          12
AREA 2      TOWN 2       15          7
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)