SQL服务器数据透视查询不采用空计数

时间:2013-11-09 16:08:02

标签: sql-server pivot

我在SQLserver 2008中使用以下语法运行一个Pivot查询,以了解表名tbInflowMaster中列名'PrevalidationStatus'的计数。我得到了答案,但

计数为空值未来。对于null显示为0 ..我希望在查询中的未处理字段中将Null值计为未处理。请帮助我

我写了下面的查询,它适用于所有文件但不适用于null

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   

我输出如下:

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'

1 个答案:

答案 0 :(得分: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