Sql 当计数(*)为空时返回0

Sql 当计数(*)为空时返回0,sql,Sql,我是初学者,需要你的帮助 我在一个表中有两列: A_VATNO和 一辆车的数量不算在内 当无A_VATNO时,作为一行导出的内容不计算在内 对于我的列表中缺少的a_VATNO,我需要得到一个零 在下面的示例中,我没有为A_VATNO='123456789'和A_ALARMTYPE='40'获取任何信息,因为表报警中没有记录 例如: 102030401 | 10 987654321 | 45 有什么解决方案可以最终得到这个结果吗 102030401 | 10 987654321 | 4

我是初学者,需要你的帮助

我在一个表中有两列:

  • A_VATNO和
  • 一辆车的数量不算在内
  • 当无
    A_VATNO
    时,作为一行导出的内容不计算在内

    对于我的列表中缺少的
    a_VATNO
    ,我需要得到一个零

    在下面的示例中,我没有为A_VATNO='123456789'和A_ALARMTYPE='40'获取任何信息,因为表
    报警中没有记录

    例如:

    102030401  | 10 
    987654321  | 45
    
    有什么解决方案可以最终得到这个结果吗

    102030401  | 10
    987654321  | 45
    123456789  | 0
    
    提前谢谢你

     SELECT A_VATNO, COUNT(*) 
           FROM ALARMS 
       WHERE A_ALARMTYPE = '40' AND  A_VATNO IN
    
    (
       '102030401',
    '987654321',
    '123456789'
       )
       AND DATE(A_ALARM_DATE) >= '2015-01-01' 
        AND DATE(A_ALARM_DATE) <= '2015-12-31'
          
       GROUP BY A_VATNO
         ;
    
    选择一个值,计数(*)
    警报
    其中A_ALARMTYPE='40'和A_VATNO在
    (
    '102030401',
    '987654321',
    '123456789'
    )
    和日期(报警日期)>=“2015-01-01”
    
    和DATE(A_ALARM_DATE)您需要一个派生表来与外部联接一起使用。典型的语法是:

    SELECT v.ATNO, COUNT(a.A_VATNO) 
    FROM (SELECT '102030401' as VATNO UNION ALL
          SELECT '987654321' as VATNO UNION ALL
          SELECT '123456789' as VATNO
         ) v LEFT JOIN
         ALARMS a
         ON a.A_VATNO = v.vatno AND
            a.A_ALARMTYPE = '40' AND
            A_ALARM_DATE >= '2015-01-01' AND
            A_ALARM_DATE <= '2016-01-01'
    GROUP BY v.VATNO ;
    
    选择v.ATNO,计数(a.a\u VATNO)
    从(选择“102030401”作为VATNO UNION ALL
    选择“987654321”作为VATNO UNION ALL
    选择“123456789”作为VATNO
    )v左连接
    警报a
    关于a.a_VATNO=v.VATNO和
    a、 a_ALARMTYPE='40'和
    报警日期>='2015-01-01'和
    
    报警日期用您正在使用的数据库标记您的问题。