SQLite alias (AS) que não trabalham na mesma consulta

Eu estou preso em um (aparentemente) extremamente tarefa trivial que eu não posso fazer o trabalho , e eu realmente sinto que não há chance de pedir conselhos. Eu costumava lidar com PHP/MySQL mais de 10 anos atrás e eu poderia ser bastante enferrujado, agora que estou lidando com um SQLite DB usando Qt5.

Basicamente, eu estou selecionando alguns registros, enquanto querendo fazer algumas operações matemáticas com os obtidos colunas. Me lembro (e re-leitura de documentação e exemplos) que a palavra-chave "COMO" vai convenientemente mudar o nome (alias) de um valor. Assim, por exemplo, eu tenho essa consulta, onde "X" é um número inteiro que eu renderização para um grande Qt seqüência de caracteres antes de executá-lo com um QSqlQuery. Esta consulta permite que eu selecione todos os componentes eletrônicos usados em um Projeto e calcular quantos deles para a ordem (arredondamento para o mais próximo múltiplo de 5) e o preço total por componente.

SELECT Inventory.id, UsedItems.pid, UsedItems.RefDes, Inventory.name, Inventory.category,
 Inventory.type, Inventory.package, Inventory.value, Inventory.manufacturer, 
        Inventory.price, UsedItems.qty_used as used_qty,
        UsedItems.qty_used*X AS To_Order, 
        ROUND((UsedItems.qty_used*X/5)+0.5)*5*CAST((X > 0) AS INT) AS Nearest5, 
        Inventory.price*Nearest5 AS TotPrice
        FROM Inventory 
        LEFT JOIN UsedItems ON Inventory.id=UsedItems.cid 
        WHERE UsedItems.pid='1'
        ORDER BY RefDes, value ASC

Assim, por exemplo, eu alias UsedItems.qty_used como used_qty. No começo eu tentei usá-lo no próximo campo, multiplicando por X, escrevendo que "used_qty*X COMO To_Order" ... falha da Consulta. Bem, não se preocupe, eu tinha acabado de colocar a guia original.nome do campo e funcionou. Indo mais longe, eu tenho um cálculo complexo, e eu quero usar o seu resultado no próximo campo, mas o mesmo problema apareceu: se eu alias "ROUND(...)" COMO Nearest5 e, em seguida, tentar utilizar este valor multiplicando-a no campo seguinte, a consulta falhar. Por favor, note: a consulta FUNCIONA, mas se eu não usar aliases os seguintes campos, a saber, se eu não usar o alias Nearest5 no TotPrice campo. Eu só quero evitar a re-escrever todo o ROUND(...) coisa para o TotPrice campo.

O que estou ausente/fazendo de errado? Quer SQLite não suporta aliases na mesma consulta ou eu estou usando uma sintaxe errada e eu sou muito preso/confuso para ver o erro (que eu tenho certeza que ele tem que ser muito estúpido).

0
2019-09-17 11:15:10
origem
0 respostas

Veja mais perguntas por marcas