2015-09-10 61 views
2

我是SQL的初学者。我需要总结性别专栏。我的意思是表中有多少名男性和多少名女性。这就是我的尝试。如何总结SQL中的varchar列?

SELECT 
SUM(CASE WHEN Gender='Female' THEN Gender ELSE 'Null' END)Gender, 
SUM(CASE WHEN Gender='Male' THEN Gender ELSE 'Null' END)Gender 
FROM EmployeeDetails; 

我收到此错误: 消息8117,级别16,状态1,行2 操作数的数据类型为nvarchar是和运营商无效。

所以我尝试以下查询:

Select length(Gender) - length(replace(Gender, ' ', '')) + 1 NumbofWords 

从EmployeeDetails

其示出作为长度不是可识别的内置函数。 任何帮助将不胜感激。 在此先感谢。

回答

2

这是一个XY解决方案的一点点,因为它产生行不是专栏。但是这更像是“数据库-y”,基本上你所拥有的是以下版本的以下内容。

你不能的话,但你可以计数他们。因此,只要你GROUP BYGenderCOUNT

select Gender, count(*) 
from EmployeeDetails 
group by Gender 
+0

这是很容易总结这个词。感谢您的建议。 –

3

SUM + CASE将工作,但你需要总结类似的数字:

SELECT 
    SUM(CASE WHEN Gender='Female' THEN 1 ELSE 0 END) AS [FemaleNumber], 
    SUM(CASE WHEN Gender='Male' THEN 1 ELSE 0 END) AS [MaleNumber] 
FROM EmployeeDetails; 

的SQL Server 2012+

SELECT 
    SUM(IIF(Gender='Female', 1, 0)) AS [FemaleNumber], 
    SUM(IIF(Gender='Male', 1, 0)) AS [MaleNumber] 
FROM EmployeeDetails; 
+0

非常感谢......其工作。再次感谢您的即时回复。 –