Domanda

Sono nuovo di Firebird, e sto avendo particolare difficoltà a tradurre questa T-SQL per Firebird SQL. Questo codice viene memorizzato al di fuori del database, non in una stored procedure.

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"

Credo che dagli errori e la mia sperimentazione che sto praticamente costretto a mettere questo in una stored procedure in qualche modo. C'è un modo che io possa fare questo, pur mantenendo il codice di base di dati?

È stato utile?

Soluzione

Il codice può essere semplificata in una singola query:

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

Utilizzando i doppi apici è ANSI per sfuggire caratteri inusuali, nessuno dei quali vedo l'esempio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top