Добрый день!
Я пытаюсь провести небольшой анализ нулевого отношения для некоторых таблиц для нашего клиента, и я хотел создать хранимую процедуру, чтобы упростить ее автоматизацию.
Проблема, с которой я сталкиваюсь, заключается в том, что при использовании самого запроса он дает правильный результат, но при использовании хранимой процедуры результат отличается.
Запрос
with cte as
(SELECT sum(case when [EstateBOA] is NULL then 1 else 0 end) as "Null Values",
sum(case when [EstateBOA] is not NULL then 1 else 0 end) as "Not-Null Values"
FROM [FASTDW].[PROP].[FactBuilding]
)
SELECT '[EstateBOA]' as ColumnName,*,CAST("Null Values" AS FLOAT) /
CAST(("Null Values" + "Not-Null Values") AS FLOAT) as "Null ratio"
FROM cte
Хранимая процедура
USE [AUDIT]
GO
/****** Object: StoredProcedure [dbo].[GetNullStatsFromColumnInBuilding]
Script Date: 2018-06-11 11:22:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetNullStatsFromColumnInBuilding]
@Columnname nvarchar(50)
AS
;with cte as
(SELECT sum(case when @Columnname is NULL then 1 else 0 end) as "NullValues",
sum(case when @Columnname is not NULL then 1 else 0 end) as "Not-Null Values"
FROM [FASTDW].[PROP].[FactBuilding]
)
SELECT @Columnname as ColumnName,*, CAST("Null Values" AS FLOAT) /
CAST(("Null Values" + "Not-Null Values") AS FLOAT) as "Null ratio"
FROM cte
Результат запроса

Результат хранимой процедуры 
Есть идеи, почему это так?Это из-за «с X как» внутри хранимой процедуры?
Спасибо за ваше время.