sql >> Databáze >  >> RDS >> Oracle

Správné použití COALESCE v klauzuli WHERE

Můžeme použít ROW_NUMBER zde vyberte, co chcete s prioritami:

WITH cte AS (
    SELECT f.*, ROW_NUMBER() OVER (ORDER BY DECODE(ITEM_NO, 'A15354', 1,
                                                            'CURR_NOT_IN_TABLE', 2,
                                                            'GR0013', 3,
                                                            'GUOIUW', 4, 5)) rn
    FROM fruit f
    WHERE spoiled = 'Y'
)

SELECT ITEM_NAME
FROM cte
WHERE rn = 1;

Cílem je přiřadit prioritu od 1 do 5 pro každý předmět, který je zkažený. Používáme ROW_NUMBER vygenerovat sekvenci vždy začínající 1, která je nejvyšší dostupnou prioritou.



  1. Je možné optimalizovat dotaz pomocí klauzule EXISTS namísto IN s DISTINCT

  2. Povolit vkládání pouze ze spouštěče

  3. Jak připojit databázi Oracle z PHP

  4. Získejte úplný řetězec dotazu MySQL při vložení nebo aktualizaci