2015-09-10 95 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

非常感謝......其工作。再次感謝您的即時回覆。 –