0

次のクエリがあります。

select 
     Pr.Name, PS.TotalSales, PS.Truesales
From 
     Product Pr
Left Join 
     (select ProdudtId, TotalSales = COUNT(Transaction.Id),
            Truesales = COUNT(DISTINCT case when .Transaction.ExceptionCode  = ' ' then Transaction.Id END)
     from [Transaction] 
     WHERE   
        (ResponseTime < '2013/05/16 01:53:52' and  RequestTime > '2013/05/11 01:53:52')
     Group By 
          ProductId) PS on PS.ProductId = Pr.ProductId

次のような結果が得られます。

Name TotalSales  TrueSales
AB     3             2
CD     NULL          NULL
EF     1              1

このような結果を得たいと思います

Name TotalSales  TrueSales
AB     3             2
CD     0             0
EF     1              1

nulls の代わりに 0 を表示したいと思います。クエリでどのような変更を加える必要があるか教えてもらえますか?

2 つのテーブルは次のとおりです。

    1 ) Product 
    ProuctId, Name 

2) Sales
TransactionId, ReqTime, ResTime, ProductId(FK), ExceptionCode
4

2 に答える 2

2
select Pr.Name, isnull(PS.TotalSales, 0) TotalSales, isnull(PS.Truesales, 0) Truesales
From Product Pr
Left Join (
select ProdudtId, TotalSales = COUNT(Transaction.Id),
Truesales = COUNT(DISTINCT case when .Transaction.ExceptionCode  = ' ' then Transaction.Id END)
from [Transaction] 
WHERE   
(ResponseTime < '2013/05/16 01:53:52' and  RequestTime > '2013/05/11 01:53:52')
Group By ProductId) PS on PS.ProviderId = Pr.ProviderId
于 2013-05-20T17:28:46.257 に答える
2

この行を変更

select Pr.Name, PS.TotalSales, PS.Truesales

select Pr.Name, IsNull(PS.TotalSales, 0) AS TotalSales, IsNull(PS.Truesales, 0) AS Truesales
于 2013-05-20T17:29:19.650 に答える