如何在sql中没有数据的情况下选择所有记录

如何在sql中没有数据的情况下选择所有记录,sql,sql-server,select,Sql,Sql Server,Select,我有一个类似的问题 SELECT 'Education' as Purpose,ate_sex, Age_range, COUNT(*) AS Total FROM ( SELECT dbo.ClientMain.ate_sex, dbo.ClientMain.ate_Id, CASE WHEN ate_Age BETWEEN 15 AND 19 THEN '15-19' WHEN ate_Age BET

我有一个类似的问题

SELECT  'Education' as Purpose,ate_sex, Age_range, COUNT(*) AS Total
  FROM (
        SELECT dbo.ClientMain.ate_sex, dbo.ClientMain.ate_Id, 
          CASE
            WHEN ate_Age BETWEEN 15 AND 19 THEN '15-19'
            WHEN ate_Age BETWEEN 20 AND 24 THEN '20-24'
            WHEN ate_Age BETWEEN 25 AND 34 THEN '25-34'
            WHEN ate_Age BETWEEN 35 AND 44 THEN '35-44'
            WHEN ate_Age BETWEEN 45 AND 54 THEN '45-54' 
            WHEN ate_Age BETWEEN 55 AND 64 THEN '55-64'
            ELSE '80+' END AS Age_range
         FROM dbo.ClientMain 
         INNER JOIN dbo.ClientSub ON dbo.ClientMain.ate_Id = dbo.ClientSub.ate_Id
         WHERE (dbo.ClientSub.chk_Name = N'Assistance')
       ) AS t group by ate_sex,Age_range
返回的数据为:

但我希望我的结果是,当没有年龄在15-19岁之间的记录时,它必须返回零。As教育男性15-19 0 这些是我的桌子 任何人都可以修改我的查询,使无记录为零。

  • 使用
    左连接
    而不是
    内部连接

  • 使用
    ISNULL(COUNT(*),0)
    代替
    COUNT(*)
    。或者,您也可以使用

    Total=计数(*)为空时的情况,然后0其他计数(*)结束

      • 使用
        左连接
        而不是
        内部连接

      • 使用
        ISNULL(COUNT(*),0)
        代替
        COUNT(*)
        。或者,您也可以使用

        Total=计数(*)为空时的情况,然后0其他计数(*)结束

        • 试试这个

          case when COUNT(*) = 1 then 0 else COUNT(*) end as exp
          
          试试这个

          case when COUNT(*) = 1 then 0 else COUNT(*) end as exp
          


          如果您在任何表中都没有15-19的男性数据,但您仍然希望它出现在计数为“0”的结果中。尝试用可能的行构建一个静态表,并与结果集进行交叉联接。

          如果在任何表中都没有包含15-19个male的数据,但仍希望它在结果中的计数为“0”。尝试用可能的行构建静态表,并与结果集进行交叉联接。

          请提供ClientMain和ClientSub行的示例。在ClientMain表中是否有15-19的ate_sex='Male'行?如果是,您可能希望使用左联接而不是内联接。请参阅我的表结构。@Francesco DeLisi@NareshJadapalli我给了你答案(或者至少你应该使用什么,这比一个完整的工作查询要好,因为它不会教你将来如何做这些事情)您是否希望输出中包含以下三行??“Education Mean 80+0”、“Education Mean 80+0”、“Education Others 80+0”请提供ClientMain和ClientSub行的示例。您的ClientMain表中是否有15-19的ate_sex='Male'行?如果是,您可能希望使用左联接而不是内联接。请参阅我的表结构。@Francesco DeLisi@NareshJadapalli我给了你答案(或者至少你应该使用什么,这比一个完整的工作查询要好,因为它不会教你将来如何做这些事情)您是否希望输出中包含以下三行??“Education Male 80+0”、“Education Femal 80+0”、“Education Others 80+0”'NONULL'不是公认的内置函数名。我尝试了这个。。如果我得到同样的答案。。我没有得到零。您是否执行
          左连接?
          ?“NONULL”不是可识别的内置函数名。我尝试了此。。如果我得到同样的答案。。我没有得到零。你是否做了
          左连接
          ?它也为已存在的行提供零。。当总数为1时,显示为0。如果总数大于1,则显示准确的输出Noo。。我得不到任何答案,因为已经存在的行也是零。。当总数为1时,显示为0。如果总数大于1,则显示准确的输出Noo。。我无法得到任何答案