Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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 GroupBY columnABC和提取不同的columnABC值_Sql_Sql Server - Fatal编程技术网

SQL GroupBY columnABC和提取不同的columnABC值

SQL GroupBY columnABC和提取不同的columnABC值,sql,sql-server,Sql,Sql Server,我有下面的查询,它给出了我想要的结果,但我想重复这个查询,以便对投票表中的所有WardNos执行 SELECT WardNo, (SELECT COUNT(Gender) FROM dbo.Voter WHERE (Gender = 'Male') AND (WardNo = '105')) AS MaleVoter, (SELECT COUNT(Gender) AS Expr1

我有下面的查询,它给出了我想要的结果,但我想重复这个查询,以便对投票表中的所有WardNos执行

SELECT WardNo, (SELECT COUNT(Gender) 
                FROM dbo.Voter
                WHERE (Gender = 'Male') AND (WardNo = '105')) AS MaleVoter,
               (SELECT COUNT(Gender) AS Expr1
                FROM dbo.Voter AS Voter_2
                WHERE (Gender = 'Female') AND (WardNo = '105')) AS Female-voter
FROM dbo.Voter AS Voter_1
WHERE (WardNo = '105')
GROUP BY WardNo
输出应该是这样的

WardNo Cast Male Female
103    abc  55   25
104    abc  192  45

您可以将“105”替换为Voter_1.WardNo,这将在内部查询中提供对外部表Voter_1的引用

移除

WHERE     (WardNo = '105')

这将为您提供所有WardNo的结果,我假设您的表Ward和Gender中只有两列。下面是一个查询,它可以让你得到按性别、按选区分组的选民数量


什么数据库?SQL Server,Oracle?请发布您的表的结构。我正在使用SQL Server和VarChar dataTypesUm,强制转换从何而来?它不在你的选择列表中…@Hamad,我的答案不对吗?
declare @Voter as table
(
Ward int,
Gender varchar(max)
)

Insert into @Voter values(106, 'Male')
Insert into @Voter values(106, 'Male')
Insert into @Voter values(107, 'Male')
Insert into @Voter values(107, 'Female')

Select * from @Voter

Select Ward, 
sum(case when Gender = 'Male' then 1 else 0 end) AS male,
sum(case when Gender = 'Female' then 1 else 0 end) as female 
from @Voter
group by ward