Difficulté à traduire une requête SQL Server pour Firebird
-
03-10-2019 - |
Question
Je suis nouveau à Firebird, et je vais avoir des difficultés particulières à traduire ce T-SQL Firebird SQL. Ce code est stocké à l'extérieur de la base de données, et non dans une procédure stockée.
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"
Je suppose que des erreurs et mes expériences que je suis fondamentalement forcé de mettre cela dans une procédure stockée en quelque sorte. Est-il possible que je peux le faire tout en gardant toujours le code de la base de données?
La solution
Votre code peut être simplifiée à une seule requête:
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
L'utilisation des guillemets doubles est ANSI pour échapper à des caractères inhabituels, dont aucun je vois dans l'exemple.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow