首页 > 解决方案 > SQL 使用更多带有大小写的两列

问题描述

我找不到一个很好的解释我的问题。

我有一张桌子:

user   | 70Y   | hospital
-------+-------+----------
1      | 18    | 1   
2      | 70    | 1 
3      | 90    | 0

我需要找到的是有多少人有超过 70 岁,如果有多少人在医院里。

我用这个来查找他的年龄是否超过70:

SUM(CASE WHEN 70y > 70 THEN 1 ELSE 0 END) AS 'old_person'

但是我怎么找到他在医院呢?

我对一张桌子的期望是:

 | old_person | old_person_in_hospital| 
 +------------+-----------------------+
 | 18         |              1        | 

如果我想要更多的专栏让我们说检查 40 岁,那么最简单的方法是什么?

我对表的期望:

             | old_person  |  40y_person         | 
             +-------------+---------------------+
             | 18          |            16       | 
in hospital  | 1           |             2       | 

标签: sqlsql-serverdatabasedatatable

解决方案


每列都需要一个案例:

select 
  SUM(Case when [70y] > 70 then 1 else 0 end) old_person,
  SUM(Case when [70y] > 70 and hospital = 1 then 1 else 0 end) old_person_in_hospital
from tablename

推荐阅读