![](/img/trans.png)
[英]How to replace NULL values with an empty string in a dynamic pivot query
[英]NULL Values in Dynamic Pivot Query
我希望將NULL值顯示為空格或破折號,以使結果數據集易於讀取,因為日期范圍可能會有所不同。 例如,對於一個10天的日期范圍,我可以在一個小時的10天中收到5天的NULL值。 如果某人當天沒有時間,我只希望這些NULL值為空。
我已經看到了在數據透視表上使用ISNULL的示例,但沒有在動態數據透視表上使用ISNULL的示例。 我想知道如何為填充到@PivotColumns中的動態日期列表指定NULL替換。
在下面的查詢示例中,我省略了不相關的代碼,例如聯接和其他信息列等。
SELECT
@PivotColumns = COALESCE(@PivotColumns + ',','') + QUOTENAME(CONVERT(varchar(20),eff_date,110))
FROM
(SELECT DISTINCT
eff_date
FROM
timept
WHERE
eff_date
BETWEEN
@StartDate AND @EndDate) AS TimePivot
ORDER BY
eff_date
SET
@TimeQuery =
'WITH Hours AS (
SELECT
,tp.person_id
,tp.hours
,tp.task_code
,tp.eff_date
,SUM(tp.hours) OVER(PARTITION BY tp.person_id, edr.name, tp.task_code, tp.comments ORDER BY tp.task_code) AS sum_hours
FROM
tables
WHERE
tp.eff_date BETWEEN ''' + @StartDate + ''' AND ''' + @EndDate + '''
)
SELECT
*
FROM
Hours
PIVOT
(SUM(hours)
FOR
eff_date
IN
('+@PivotColumns+')) as p'
EXEC sp_executesql @TimeQuery
嘗試這個:
@TimeQuery =
' WITH Hours AS (
SELECT
,tp.person_id
,ISNULL(tp.hours, '''')
,tp.task_code
,ISNULL(tp.eff_date, '''')
,SUM(tp.hours) OVER(PARTITION BY tp.person_id, edr.name, tp.task_code, tp.comments ORDER BY tp.task_code) AS sum_hours
FROM
tables
WHERE
tp.eff_date BETWEEN ''' + @StartDate + ''' AND ''' + @EndDate + '''
)
SELECT
*
FROM
Hours
PIVOT
(SUM(hours)
FOR
eff_date
IN
('+ @PivotColumns +')) as p'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.