Frage

Ich bin neu in Firebird, und ich habe besondere Schwierigkeit diesen T-SQL zu Firebird SQL zu übersetzen. Dieser Code wird außerhalb der Datenbank gespeichert ist, nicht in einer gespeicherten Prozedur.

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"

ich denke, aus den Fehlern und meine Experimenten, dass ich im Grunde irgendwie diese in eine gespeicherte Prozedur zu setzen gezwungen. Gibt es eine Weise, die ich dies tun kann, während immer noch den Code aus der Datenbank zu halten?

War es hilfreich?

Lösung

Ihr Code kann auf eine einzige Abfrage vereinfacht werden:

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

Mit doppelten Anführungszeichen ist ANSI für ungewöhnliche Zeichen zu entkommen, von denen keines mir im Beispiel zu sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top