Заменить нулевые значения в SQL Pivot Query - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть хранимая процедура, принимающая дату и месяц как параметр, который приводит к ежемесячному посещению листа.Для обработки нулевых значений я хочу заменить нулевые значения на «Ноль».

Хранимая процедура

ALTER procedure [dbo].[sps_AttendanceShowModified] @mon int, @year int
As begin DECLARE @cols  AS NVARCHAR(MAX)=''; DECLARE @query AS
NVARCHAR(MAX)='';

set @query =  'SELECT * from  (
     select  e.Name,a.WorkHours,DAY(a.AttendaceDate) AS d1 from  Attendace a,employee e where e.EmpID=a.EmpID and
MONTH(a.AttendaceDate)= ' + CONVERT(VARCHAR(12), @mon)+ ' AND
YEAR(a.AttendaceDate)= ' + CONVERT(VARCHAR(12), @year)+ ' ) src pivot 
(
    max(WorkHours) for d1 in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30])
) piv'

execute(@query) end

1 Ответ

0 голосов
/ 26 февраля 2019

Вам необходимо изменить SELECT * для обработки null, используя ISNULL или COALESCE, как показано ниже.

SELECT name,COALESCE([1],0) AS [1],COALESCE([2],0) AS [2] .... другие столбцы

Если вы хотите 'Zero'чтобы появиться, в этом случае вам нужно использовать CAST или CONVERT перед применением COALESCE, как показано ниже.

COALESCE(cast([1] as varchar),'Zero') as [1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...