SQL-如何计算案例中的唯一性?

SQL-如何计算案例中的唯一性?,sql,count,case,distinct,Sql,Count,Case,Distinct,我正在数出院处方的数量。情况如下: 每个处方都有几个顺序,因此仅使用计数就可以多次出现处方号。为了计算处方号(不是医嘱),我使用了distinct,这样每个处方号都会被计算一次。我只需要计算出院处方,所以我设置了另一个条件:优先级,如“%discharge%”。 虽然这是不正确的工作 我正在使用此查询,但它不断返回1,这是不正确的: SELECT Count (distinct (case when (PrescNo is not null)

我正在数出院处方的数量。情况如下:

每个处方都有几个顺序,因此仅使用计数就可以多次出现处方号。为了计算处方号(不是医嘱),我使用了distinct,这样每个处方号都会被计算一次。我只需要计算出院处方,所以我设置了另一个条件:优先级,如“%discharge%”。 虽然这是不正确的工作

我正在使用此查询,但它不断返回1,这是不正确的:

SELECT
    Count (distinct 
        (case when
        (PrescNo is not null)
        and (Priority like '% discharge%') 
        then 1 else null end)) as "Discharge Prescription" 
FROM Order_DIS
where PrescNo is not null
and ADM_Type='In Patient'
表包含以下列:

  • (处方号)作为处方号
  • (优先权)作为优先权
  • (OrderItem)作为订单
  • (ADM_类型)作为入院类型

您正在计算常量
1
的不同值,并且该值不能超过
1
。您需要计算可以区分的内容,例如
pressno

SELECT COUNT(DISTINCT case when Priority like '% discharge%' then PrescoNo end)
            ) as Discharge_Prescription
FROM Order_DIS
WHERE PrescNo is not null AND ADM_Type = 'In Patient';
查询也有点复杂。如果这是较大查询的一部分,则可能需要
案例
逻辑。但对于你的问题,这更简单:

SELECT COUNT(DISTINCT PrescoNo) as Discharge_Prescription
FROM Order_DIS
WHERE PrescNo LIKE '% discharge%' AND ADM_Type = 'In Patient';
此外,如果没有重复
PrescoNo
,那么简单的
计数(*)
就足够了,没有明显的

SELECT COUNT(*) as Discharge_Prescription
FROM Order_DIS
WHERE PrescNo LIKE '% discharge%' AND ADM_Type = 'In Patient';

公布样本数据和预期结果以澄清。