Problemas para traducir una consulta de SQL Server para Firebird
-
03-10-2019 - |
Pregunta
Soy nuevo en Firebird, y estoy teniendo una dificultad particular la traducción de este T-SQL para SQL Firebird. Este código se almacena fuera de la base de datos, no en un procedimiento almacenado.
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"
Creo que de los errores y mi experimentación que básicamente estoy obligado a poner esto en un procedimiento almacenado de alguna manera. ¿Hay alguna manera de hacer esto sin dejar de mantener el código de la base de datos?
Solución
El código puede ser simplificado a una sola consulta:
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
El uso de comillas dobles es ANSI para escapar caracteres inusuales, ninguno de los cuales me veo en el ejemplo.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow