SQL GroupBY columnABC和提取不同的columnABC值
我有下面的查询,它给出了我想要的结果,但我想重复这个查询,以便对投票表中的所有WardNos执行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
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