如何获取同一表中多个列下的字段总数?

时间:2018-07-20 05:26:42

标签: sql-server-2008

我有一个SQL表,其中有(Id,Fname,Lname,Age,PNR_NO)列。 “年龄”列仅包含儿童的年龄,而对于其他年龄,则为空,为区分黑白成人和儿童,我们将前缀设置为“ Chd”。在来自我的前端应用程序的“子项”的“ Fname”列中。

现在,我需要将Adults的总数作为AdultNum,将Childs的总数作为ChildNum,Age1,Age2。我之所以需要这些,是因为我需要以此顺序将它们存储在C#文件的DataTable中,以便进行一些计算以获得费率。

我尝试了下面的代码,但是它只给出了一列的总数。

SELECT count(*) AS ChildNum FROM hc_data WHERE Fname LIKE'Chd_%' and 
PNRNO = '18717162620'

请帮助我达到预期的效果。 非常感谢您的支持。 谢谢!

1 个答案:

答案 0 :(得分:0)

我想这就是你想要的吗?

使用Fname上的CASE语句区分儿童和成人

SELECT SUM(CASE WHEN Fname LIKE 'Chd_%' THEN 1 ELSE 0 END) AS ChildNum,
       SUM(CASE WHEN Fname NOT LIKE 'Chd_%' THEN 1 ELSE 0 END) AS AdultNum 
FROM   hc_data