Új hozzászólás Aktív témák

  • user112
    senior tag

    Ez a két módszer:

    SELECT t.azon
    ,t.c1
    ,t.c2
    ,CASE
    WHEN t.c2 ! = 0 THEN
    t.c1 / t.c2
    END AS arany
    ,CASE
    WHEN t.c1 > 10 AND CASE
    WHEN t.c2 ! = 0 THEN
    t.c1 / t.c2
    END > 50 THEN
    'x'
    END hiba
    FROM (SELECT 'a' azon
    ,20 c1
    ,30 c2
    FROM dual
    UNION
    SELECT 'b' azon
    ,20 c1
    ,0 c2
    FROM dual
    UNION
    SELECT 'c' azon
    ,40 c1
    ,NULL c2
    FROM dual
    UNION
    SELECT 'd' azon
    ,500 c1
    ,3 c2
    FROM dual) t

    SELECT u.*
    ,CASE
    WHEN u.c1 > 10 AND u.arany > 50 THEN
    'x'
    END hiba
    FROM (SELECT t.azon
    ,t.c1
    ,t.c2
    ,CASE
    WHEN t.c2 ! = 0 THEN
    t.c1 / t.c2
    END AS arany
    FROM (SELECT 'a' azon
    ,20 c1
    ,30 c2
    FROM dual
    UNION
    SELECT 'b' azon
    ,20 c1
    ,0 c2
    FROM dual
    UNION
    SELECT 'c' azon
    ,40 c1
    ,NULL c2
    FROM dual
    UNION
    SELECT 'd' azon
    ,500 c1
    ,3 c2
    FROM dual) t) u

    Ebből leesett, hogy a CASE nem tartalmazhat aliast. Ha behelyettesítem a kifejezést, akkor már jó lett.
    Ahány CASE, annyi Hiba mező lett, így végül is jó lett a lekérdezésem.
    Köszönöm.
    A belső Select-ben mit jelent az "a", 20,30 stb.?

Új hozzászólás Aktív témák