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?

¿Fue útil?

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
scroll top