Ошибка "неверное имя столбца" в тесте tSQLt?
Я работаю над отчетом о продажах, чтобы получить информацию о продажах и целях из базы данных. Я написал рабочий запрос как хранимую процедуру, однако я пытаюсь протестировать тот же запрос в контексте теста tSQLt:
SELECT
COUNT (CASE WHEN (SaleSource.Description = 'Telephone' OR SaleSource.Description = 'Online') AND CAST(SaleDetails.CreateDt AS DATE) = CONVERT(DATE, GETDATE()) THEN 1 ELSE NULL END) AS DailyTelephoneSales,
(SELECT Value FROM dbo.MonthlyTargets WHERE Description LIKE '%Telephone%' + DATENAME(MONTH, GETDATE())) / 22 AS DailyTelephoneSalesTarget,
COUNT(CASE WHEN (SaleSource.Description = 'Info' OR SaleSource.Description = 'Offer' OR SaleSource.Description = 'Mail') AND CAST(SaleDetails.CreateDt AS DATE) = CONVERT(DATE, GETDATE()) THEN 1 ELSE NULL END) AS DailyMailSales,
COUNT(CASE WHEN CAST(SaleDetails.CreateDt AS DATE) = CONVERT(DATE, GETDATE()) THEN 1 ELSE NULL END) AS DailyTotalSales,
COUNT(CASE WHEN MONTH(CAST(SaleDetails.CreateDt AS DATE)) = MONTH(GETDATE()) AND YEAR(CAST(SaleDetails.CreateDt AS DATE)) = YEAR(GETDATE()) THEN 1 ELSE NULL END) AS MonthlyTotalSales,
(SELECT Value FROM dbo.MonthlyTargets WHERE Description LIKE '%Mail%' + DATENAME(MONTH, GETDATE())) AS MonthlyMailTarget,
(SELECT Value FROM dbo.MonthlyTargets WHERE Description LIKE '%Telephone%' + DATENAME(MONTH, GETDATE())) AS MonthlyTelephoneSalesTarget,
(SELECT CAST(Value AS int) FROM dbo.MonthlyTargets WHERE Description LIKE '%Mail%' + DATENAME(MONTH, GETDATE())) + (SELECT CAST(Value AS int) FROM dbo.MonthlyTargets WHERE Description LIKE '%Telephone%' + DATENAME(MONTH, GETDATE())) AS MonthlyTotalTarget,
COUNT(CASE WHEN YEAR(CAST(SaleDetails.CreateDt AS DATE)) = YEAR(GETDATE()) THEN 1 ELSE NULL END) AS AnnualTotalSales,
(SELECT SUM(CAST(Value AS int)) FROM dbo.MonthlyTargets WHERE Description LIKE '%Target%') AS AnnualTotalTarget
INTO
actual
FROM
dbo.SaleDetails
INNER JOIN
dbo.Sale ON SaleDetails.SaleId = Sale.SaleId
INNER JOIN
dbo.SaleSource ON Sale.SaleSourceId = SaleSource.SaleSourceId
Единственная разница между хранимой процедурой и тестовым кодом - это часть INTO. Хранимая процедура работает нормально, однако при попытке выполнить CREATE PROCEDURE для теста я получаю "Неверное имя столбца ___" для каждого столбца, который я пытаюсь создать в "фактической" таблице.
Если кто-нибудь может понять, в чем проблема, я был бы очень признателен за любую помощь или совет. Если было бы более полезно опубликовать всю процедуру CREATE PROCEDURE для теста tSQLt, просто дайте мне знать, и я выложу это.
Заранее спасибо!
1 ответ
Если Описание является фактическим столбцом в вашей таблице, попробуйте [Описание] в ваших инструкциях where.