I'm trying to replace NULL to 0 in the output of my TagValue column combined with avg Cast. I tried the following query:
ISNULL(TRY_CAST(TagValue AS DECIMAL(18,2)),0) AS TagValue
in the code
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
SELECT @cols = STUFF((SELECT ',' + QUOTENAME(TagID)
FROM [table]
GROUP BY TagID
ORDER BY TagID
FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'')
SET @query = 'SELECT TimeStamp, ' + @cols + ' from
(
select DATEADD(minute,DATEDIFF(minute,0,TimeStamp)/5*5,0) AS TimeStamp, TagID , ISNULL(TRY_CAST(TagValue AS DECIMAL(18,2)),0) AS TagValue
from [table]
-- Where TagValue isnull(TagValue,1)=0
Group By datediff(minute, 0,Timestamp)/5,TagID, TagValue
) x
pivot
(
AVG(TagValue)
for TagID in ( ' + @cols + ' )
) p '
EXEC(@query)
although there are no errors the query output keeps showing NULL.
I also tried the following queries:
SELECT @cols = STUFF((SELECT ','', IsNull(' + QUOTENAME(TagID)+', 0) as '+QUOTENAME(TagID)
FROM [table]
GROUP BY TagID
ORDER BY TagID
FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'')
...
SET @query = 'SELECT TimeStamp, ' +ISNULL(@cols,0) + ' from ...
Also the Case function:
CASE When (TagValue= NULL) THEN 0 ELSE TRY_CAST(TagValue AS DECIMAL(18,2)) END AS TagValue
Would very appreciate your help! Thanks a lot