2016-07-26 14 views
0

私はこのストアドプロシージャを持っており、値Imにカラム名を追加したいと思います。イムは、COALESCEを使用している場合、私は "TotalNewspapers"COALESCEでカラム名を追加

(またはものは何でも私が追加する必要があります)として

をどこに追加shoud?

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); 
+2

'COALESCE()'の結果をエイリアスにしたいので、 'COALESCE((サブクエリ)、0)'の後ろに 'TotalNewpapers"として 'を入れてください。 – MatBailie

+0

素晴らしい!ありがとう!それは完璧に動作します! – SomeAnonymousPerson

答えて

2

あなたはISNULLCOALESCEを使用することができます。

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] 

私はあなたが必要とするすべては1つのselect文で行うことができ、サブクエリを削除します。また、aliasesを追加します。

+0

答えをありがとうが、値がnullでも同様に0を取得する必要があります。 – SomeAnonymousPerson

+0

試しましたか? :) 'ISNULL'はNULLを指定された置換値に置き換えます(この場合は0です)。 'COALESCE'は引数を順番に評価し、最初に評価されなかった最初の式の現在の値をNULLに返します。したがって、 'count(distinct a.AppendageName)'がNULLの場合、次の値は0になります。 – gofr1

+0

でした。値はまだnullですが、代わりに0を書き込んでいません – SomeAnonymousPerson

関連する問題