Replacing null values in dynamic pivot sql query

Khushal_Jain

enter image description here

Image transcription:

FTE/RATE CARD | 2018-01-01 | 2018-02-01 | 2018-03-01 | 2018-04-01 | 2018-05-01 | 2018-06-01 | ...
-------------------------------------------------------------------------------------------------
FTE 3         | NULL       | NULL       | NULL       | 33         | 38         | 40.5       | ...

I have a pivot sql query as below. I need to replace NULL values with Zeros in the result. I don't know where do I exactly use the IsNull or Coalesce function in the query.

DECLARE @cols AS NVARCHAR(MAX),
        @query AS NVARCHAR(MAX) 
SELECT  @cols = STUFF
(
(
SELECT distinct ',' + QUOTENAME([MONTH])
FROM   [HEADCOUNT]
WHERE  [MONTH] BETWEEN '01-012018' AND '12-01-2018'
ORDER BY ',' + QUOTENAME([MONTH])
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,''
)
SET     @query = 'SELECT [FTE/RATE CARD],' + @cols + ' FROM
(
SELECT  [MONTH],[FTE/RATE CARD],[HC]
FROM    [HEADCOUNT]
WHERE   [CC-LOC] IN ([CC-LOC]) 

) x pivot (Sum ([HC]) for [MONTH] in (' + @cols + '))p' execute(@query)
MarcinJ

You'll need to generate another column list for the select statement, and wrap individual months with ISNULL, like so:

DECLARE @cols AS NVARCHAR(MAX),
        @selectCols AS NVARCHAR(MAX),
        @query AS NVARCHAR(MAX) 

SELECT  @selectCols = STUFF
(
(
SELECT distinct ', ISNULL(' + QUOTENAME([MONTH]) + ', 0) AS ' + QUOTENAME([MONTH])
FROM   [HEADCOUNT]
WHERE  [MONTH] BETWEEN '01-012018' AND '12-01-2018'
ORDER BY ',' + QUOTENAME([MONTH])
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,''
)



SELECT  @cols = STUFF
(
(
SELECT distinct ',' + QUOTENAME([MONTH])
FROM   [HEADCOUNT]
WHERE  [MONTH] BETWEEN '01-012018' AND '12-01-2018'
ORDER BY ',' + QUOTENAME([MONTH])
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,''
)
SET     @query = 'SELECT [FTE/RATE CARD],' + @selectCols + ' FROM
(
SELECT  [MONTH],[FTE/RATE CARD],[HC]
FROM    [HEADCOUNT]
WHERE   [CC-LOC] IN ([CC-LOC]) 

) x pivot (Sum ([HC]) for [MONTH] in (' + @cols + '))p' execute(@query)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SQL Server 2012 Pivot Dynamic with Values?

분류에서Dev

SQl cross pivot query error

분류에서Dev

SQL Server Dynamic Pivot Column Names

분류에서Dev

sql server - transforming data with dynamic pivot

분류에서Dev

Transform table structure of SQL query result (pivot)

분류에서Dev

SQL query using sum(column) in pivot function

분류에서Dev

SQL aggregate multiple values in a column then Pivot

분류에서Dev

SQL rows to columns (Pivot with just bit values)

분류에서Dev

Replacing a value with NULL in a table in SQL Server using vb.net

분류에서Dev

Problem passing a datetime variable into a dynamic SQL query

분류에서Dev

Play Scala Anorm dynamic SQL for UPDATE query

분류에서Dev

Returning null values with multiple table in a query

분류에서Dev

MySQL dynamic pivot table

분류에서Dev

Replacing null with zero

분류에서Dev

Sql query getting name column null

분류에서Dev

Replacing multiple occurrences of dynamic strings?

분류에서Dev

Not able to allow null values in my sql script

분류에서Dev

Why does this SQL order null values last?

분류에서Dev

Access Pivot Query

분류에서Dev

How to use Power Query to create pivot tables with non-numerical values

분류에서Dev

How to pivot values of timeindex

분류에서Dev

SQL Query for Group by with two sorting values and count the equal values

분류에서Dev

What is wrong with my dynamic SQL Query? Using a char data type

분류에서Dev

Null values from MQL query to business/sponsored_recipient/sponsorship

분류에서Dev

MySQL Single update query, without updating non-null values

분류에서Dev

Replacing null String to empty String

분류에서Dev

Replacing an element of a list with multiple values

분류에서Dev

SQL Server : how to pivot where new columns have multiple unique values

분류에서Dev

SQL Pivot data by time

Related 관련 기사

뜨겁다태그

보관