编写查询以查找从非急诊室出院的急诊就诊次数。如果单元是ED单元,则列dep.ADT_UNIT_TYPE_C列存储1。假设NULL值是用于此查询的非ED单位。以下哪一项产生这个数字?
我认为它是A,因为在我看来,这听起来是正确的语法。计数(CASE WHEN THEN ELSE END标准格式(A有。B没有THEN?那么这是不正确的语法?请帮助我理解这些选择之间的细微差别。
A.(
COUNT( CASE WHEN dep.ADT_UNIT_TYPE_C is NULL OR dep.ADT_UNIT_TYPE_C <> 1 THEN NULL
ELSE 1
END )
B.(
COUNT( CASE WHEN dep.ADT_UNIT_TYPE_C is NULL or dep.ADT_UNIT_TYPE_C <> 1
ELSE NULL
END)
C.(
CASE WHEN dep.ADT_UNIT_TYPE_C Is NULL or dep.ADT_UNIT_TYPE_C <> 1 THEN COUNT (NULL)
ELSE COUNT (1)
END
D.(
CASE WHEN dep.ADT_UNIT_TYPE_C is NULL or dep.ADT_UNIT_TYPE_C <> 1 THEN COUNT(1)
ELSE COUNT(NULL)
END
您可以计算返回count(*(的记录,并将条件放入where子句中。
如果您使用的是Oracle,则可以使用NVL。下面的示例适用于Oracle,但如果使用mysql或SQL server,则可以使用ISNULL函数。
SELECT COUNT(*) FROM dep WHERE NVL(ADT_UNIT_TYPE_C, 0) != 1
然而,看起来您正在将此连接到另一个表,可能是访问表。所以,你要计算访问次数。访问可能存储某种部门id或将其加入部门的方式。
类似这样的东西:
SELECT COUNT(*) FROM visit v, departments d WHERE v.dep_id = d.dep_id AND NVL(d.ADT_UNIT_TYPE_C, 0) !=1
如果你想要上面显示的整个列表,你需要使用一个分组依据。这将按部门类型显示每次访问的计数。
SELECT COUNT(*) FROM visit v, departments d GROUP BY d.ADT_UNIT_TYPE_C