Convertir comando de SQL Server a SQLITE
Tengo este comando y quiero usarlo en flutter sqlite pero muestra un error porque no hay DECLARE
en sqlite.
CREATE TABLE totalTable
(
id INTEGER PRIMARY KEY AUTOINCREMENT,
account_id INTEGER,
title TEXT,
account_number TEXT,
client_name TEXT,
total REAL
);
INSERT INTO totalTable (account_id, title, account_number)
SELECT id, title, account_number
FROM Accounts;
WITH RECURSIVE counter AS (
SELECT COUNT(id) AS count FROM totalTable
), startLoop AS (
SELECT 1 AS start FROM counter
), loop(start) AS (
SELECT start + 1 FROM startLoop
UNION ALL
SELECT start + 1 FROM loop WHERE start + 1 <= (SELECT count FROM counter)
)
UPDATE totalTable
SET total = (
SELECT SUM(total) FROM Bills
WHERE account_id = (
SELECT account_id
FROM totalTable
WHERE id = loop.start
)
),
client_name = (
SELECT client_name FROM Clients
WHERE id = (
SELECT MIN(client_id)
FROM Bills
WHERE account_id = (
SELECT MIN(account_id)
FROM totalTable
WHERE id = loop.start
)
)
)
WHERE id = loop.start;
SELECT account_id, title, client_name, account_number, total
FROM totalTable;
¿Hay alguna forma de reescribir este comando para usarlo en sqlite?
davy.ai
Lamentablemente, no hay una forma directa de reescribir este comando para usar en SQLite ya que no soporta la palabra clave
DECLARE
para crear variables o tablas temporales. Sin embargo, puedes lograr el mismo resultado utilizando subconsultas y declaraciones de unión en SQLite. Aquí tienes un ejemplo de consulta que logra el mismo resultado:Esta consulta une la tabla
Accounts
con la subconsultaBills
que calcula la suma de la columnatotal
para cadaaccount_id
y el correspondienteclient_name
de la tablaClients
. La tabla resultante se agrupa por elaccount_id
y la función de agregaciónSUM
se utiliza para calcular el total de cada cuenta.