2013-11-09 49 views
2

我在SQLserver 2008中运行一个数据透视查询,使用下面的语法知道表名tbInflowMaster中列名'PrevalidationStatus'的计数。我得到的答案,但SQL服务器数据透视查询没有计入空数

计数为空值不会到来,它显示为0为空..我要空值被计为未处理未处理的字段在查询..请帮助我

我已经写了下面的查询它适用于所有的申请,但不是空

SELECT BuyerName, [Completed] AS Completed, [WIP] 
AS 
WIP, [Closed] AS Closed , ['NULL'] AS NotProcessd FROM (
    SELECT BuyerName,PrevalidationStatus FROM tbInflowMaster) ps 

PIVOT(Count (PrevalidationStatus) FOR PrevalidationStatus IN 
    ([Completed], [WIP], [Closed], ['NULL'])) 

AS pvt 

我outputas这样的:

BuyerName   Completed WIP Closed NotProcessed 
aniruddha.gupta 1  0 0 0 
jintu.job   98  7 1 0 
jashin  130  10 31 0 
syed.sofi   76  6 44 0 
seena.lijosh  260  31 0 0 
deepak.khatua 55  6 3 0 
tuhin.choudhury 144  0 1 0 
shwetha.laxmi 133  5 5 0 

我的表“tbInflowMaster”的样子下面(例如我已经展示了一些数据):

BuyerName  PrevalidationStatus 
seena.lijosh  Completed 
tuhin.choudhury  Completed 
tuhin.choudhury  NULL 
tuhin.choudhury  Completed 
jashin   Completed 
tuhin.choudhury  Completed 
tuhin.choudhury  Null 

我的表“tbInflowMaster”

+0

[在SQL Server SQL查询透视问题(可能重复http://stackoverflow.com/questions/19877264/sql-pivot-query-问题在SQL服务器) –

+0

我在上面给了表和样本数据结束..我需要从字段PrevalidationStatus中获得空值的计数 – FaisalThayyil

回答

2

所有你需要的是与他们的“字符串表示”取代NULL值。

试试这个:

SELECT BuyerName, [Completed] AS Completed, [WIP] 
AS 
WIP, [Closed] AS Closed , [NULL] AS NotProcessd FROM (
    SELECT BuyerName, isnull(PrevalidationStatus, 'NULL') [PrevalidationStatus] FROM tbInflowMaster) ps 

PIVOT(Count (PrevalidationStatus) FOR PrevalidationStatus IN 
    ([Completed], [WIP], [Closed], [NULL])) 

AS pvt 

检查SQLFiddle