2013-11-09 2 views
2

SQL Server 2008에서 아래 구문을 사용하여 테이블 이름 tbInflowMaster에서 열 이름 'PrevalidationStatus'의 개수를 확인하기 위해 하나의 피벗 쿼리를 실행하고 있습니다. 나는 대답을 얻고있다.하지만SQL 서버 피벗 쿼리에서 NULL을 계산하지 않습니다.

null 값이 0으로 표시되지 않는다. 널값이 0으로 표시됩니다. 쿼리에서 처리되지 않은 필드에서 처리되지 않음으로 계산됩니다.

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'내 테이블의 모양 :

는 나는이 같은 모든 제출하지만 널

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  PrevalidationStatus 
seena.lijosh  Completed 
tuhin.choudhury  Completed 
tuhin.choudhury  NULL 
tuhin.choudhury  Completed 
jashin   Completed 
tuhin.choudhury  Completed 
tuhin.choudhury  Null 

내 테이블 'tbInflowMaster'

+0

[SQL 서버에서 SQL 피벗 쿼리 문제] (의 중복 가능성 http://stackoverflow.com/questions/19877264/sql-pivot-query- SQL-issue-in-sql-server) –

+0

끝에 테이블 및 샘플 데이터를 제공했습니다. 필드에서 Null 값의 개수를 가져와야합니다. 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