Sql 使用COALESCE添加列名

Sql 使用COALESCE添加列名,sql,sql-server,coalesce,Sql,Sql Server,Coalesce,我有这个存储过程,我想在我得到的值中添加一个列名。我应该在哪里添加数据 作为报纸 或者如果我使用合并,我必须添加什么 您可以使用或: 我删除子查询,所有您需要的都可以在一个select语句中完成。同时添加。您可以使用或: 我删除子查询,所有您需要的都可以在一个select语句中完成。还要添加。谢谢您的回答,但是如果值为空,我也需要得到0。您尝试过吗?:在本例中,ISNULL将用指定的替换值替换NULL,替换值为0。COALESCE按顺序计算参数,并返回最初未计算为NULL的第一个表达式的当前值。

我有这个存储过程,我想在我得到的值中添加一个列名。我应该在哪里添加数据

作为报纸

或者如果我使用合并,我必须添加什么

您可以使用或:

我删除子查询,所有您需要的都可以在一个select语句中完成。同时添加。

您可以使用或:


我删除子查询,所有您需要的都可以在一个select语句中完成。还要添加。

谢谢您的回答,但是如果值为空,我也需要得到0。您尝试过吗?:在本例中,ISNULL将用指定的替换值替换NULL,替换值为0。COALESCE按顺序计算参数,并返回最初未计算为NULL的第一个表达式的当前值。所以,如果countdistinct a.AppendageName将为空,它将选择下一个值,即0。我这样做了。并且该值仍然为null,没有写入0而不是更改的答案,请检查。只有一种情况我建议ISNULL优于COALESCE,那就是强制将视图的列定义标记为not null而不是null。否则,我总是合并—它泛化为两个以上的输入,遵循正常的数据类型优先规则,并且是ANSI标准SQL。您有什么理由在这里选择ISNULL?谢谢您的回答,但是如果值也是null,我需要得到0。您尝试过吗在本例中,ISNULL将用指定的替换值替换NULL,替换值为0。COALESCE按顺序计算参数,并返回最初未计算为NULL的第一个表达式的当前值。所以,如果countdistinct a.AppendageName将为空,它将选择下一个值,即0。我这样做了。并且该值仍然为null,没有写入0而不是更改的答案,请检查。只有一种情况我建议ISNULL优于COALESCE,那就是强制将视图的列定义标记为not null而不是null。否则,我总是合并—它泛化为两个以上的输入,遵循正常的数据类型优先规则,并且是ANSI标准SQL。您有什么理由在这里首选ISNULL?您想给合并的结果一个别名,所以只需在合并子查询0后放置TotalNewpapers。太好了!谢谢那太好了!您想给合并的结果一个别名,所以只需在合并子查询0之后添加TotalNewpapers即可。太好了!谢谢那太好了!
SELECT COALESCE ((SELECT 
  count(distinct Appendage.AppendageName) as "TotalNewspapers" 
  FROM Edition
   inner join SourceInformation on (SourceInformation.SourceInformationID =  Edition.SourceInformationID)
   left join Appendage on (Appendage.AppendageID = Edition.AppendageID)
   inner join Pages on (Edition.EditionID = Pages.EditionID)
  where 
    Edition.publishdate >= DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
    and Edition.publishdate <= DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)+1 
    and Pages.PullBy is null
    and Edition.FinishDate is null
group by Appendage.AppendageName, SourceInformation.SourceInformationName, Pages.PullBy, Edition.FinishDate, Appendage.AppendageID
having count(Pages.PullBy) > 1) , 0);
SELECT ISNULL(( --OR COALESCE
    SELECT count(distinct a.AppendageName) as [TotalNewspapers]
    FROM Edition e
    inner join SourceInformation s
        on (s.SourceInformationID =  e.SourceInformationID)
    left join Appendage a
        on (a.AppendageID = e.AppendageID)
    inner join Pages p
        on (e.EditionID = p.EditionID)
    where 
        e.publishdate >= DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
        and e.publishdate <= DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)+1 
        and p.PullBy is null
        and e.FinishDate is null
    group by a.AppendageName, s.SourceInformationName, p.PullBy, e.FinishDate, a.AppendageID
    having count(p.PullBy) > 1
),0) as [TotalNewspapers]