sql-server - SQL Server 数据透视查询不采用空计数

标签 sql-server pivot

我正在 SQLserver 2008 中使用以下语法运行一个数据透视查询,以了解表名称 tbInflowMaster 中列名称“PrevalidationStatus”的计数。我得到了答案,但是

空值计数未到来。空值显示为 0。我希望空值在查询中的“未处理”字段中被计为“未处理”。请帮助我

我编写了以下查询,它适用于所有已提交的内容,但不适用于 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”

最佳答案

您所需要做的就是将 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

关于sql-server - SQL Server 数据透视查询不采用空计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19878073/

相关文章:

sql-server - SQL Server 索引 View 列精度

sql - IN 运算符 SQL

python - 多索引数据框到具有新列的数据透视表

apache-spark - PySpark:如何转置数据帧中的多列

sql - 帮助 PIVOT

sql - 如何使用 CASE 语句在 SQL Server 中创建数据透视查询?

sql - 合并内的子查询

sql-server - sql查询仅删除一个重复行

sql - PostgreSQl:选择多行并使其成为一行

sql - PostgreSQL 中的数据透视表