Sono interessato a creare un'istruzione case che estrae valori da due colonne diverse, una delle quali con un calcolo coinvolto. Non sono sicuro di come farlo funzionare, ma ti mostrerò quello che ho finora. (Ho una colonna che mostra il tipo di articolo, ad esempio articoli di ordine speciale, articoli fuori produzione e articoli normalmente in magazzino e la seconda colonna mostra la quantità a disposizione - quantità sugli ordini di vendita per determinare se l'articolo è disponibile). la mia richiestaMysql CASE statement multiple columns
5
A
risposta
8
Per questo tipo di richiesta è necessario riutilizzare il calcolo o utilizzare una sottoquery. Questo perché l'alias che si stanno dando il valore Instock
non è disponibile per l'utilizzo all'interno della lista di selezione:
SELECT ItemID,
ItemType,
Instock,
CASE
WHEN ItemType = 'SP/OR' THEN 'Special Order'
WHEN Instock < '1' THEN 'Out of Stock'
WHEN Instock > '0' THEN 'In Stock'
END AS "Stock"
FROM
(
select ItemID, ItemType, (QuantityOnHand - QuantityonSalesOrders) AS Instock
from peachtree
) p;
Oppure:
SELECT ItemID,
ItemType,
(QuantityOnHand - QuantityonSalesOrders) as Instock,
CASE
WHEN ItemType = 'SP/OR' THEN 'Special Order'
WHEN (QuantityOnHand - QuantityonSalesOrders) < '1' THEN 'Out of Stock'
WHEN (QuantityOnHand - QuantityonSalesOrders) > '0' THEN 'In Stock'
END AS "Stock"
FROM peachtree
Che cosa succede se la colonna case-based è utilizzata in una clausola WHERE ? Qualche modo per migliorare le sue prestazioni con un sacco di righe (ad esempio gli indici)? – watery
@watery Sì, l'utilizzo degli indici può aiutare con le prestazioni. Dovresti testarlo sul tuo sistema però. – Taryn