Проблема перевода запроса SQL Server для Firebird
-
03-10-2019 - |
Вопрос
Я новичок в Firebird, и я особаю сложность перевода этого T-SQL в Firebird SQL. Этот код хранится вне базы данных, а не в сохраненной процедуре.
DECLARE @NumTotal int
DECLARE @NumUsed int
SELECT @NumTotal = COUNT(*)
FROM "some_Table"
WHERE "CreatedOn"=@CreatedOn
SELECT @NumUsed = COUNT(*)
FROM "some_Table"
WHERE "CreatedOn"=@CreatedOn AND "UserID" IS NOT NULL
SELECT @NumUsed AS "NumUsed", @NumTotal AS "NumTotal"
Я думаю, от ошибок и моих экспериментов, которые я в основном вынужден вносить это в хранимую процедуру как-то. Есть ли способ сделать это, пока не будешь держать код из базы данных?
Решение
Ваш код может быть упрощен в один запрос:
SELECT COUNT(*) AS numTotal,
(SELECT COUNT(*)
FROM YOUR_TABLE
WHERE userid IS NOT NULL
AND createdon = @createdon) AS numUsed
FROM YOUR_TABLE
WHERE createdon = @createdon
Использование двойных кавычек - это ANSI для избежания необычных персонажей, ни один из которых я вижу в примере.
Не связан с StackOverflow