NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Vlaďka Š
Člen
Avatar
Vlaďka Š:27.12.2022 12:01

Ahoj, mám dotaz, vytvořila jsem si následující řetězec: 'Aktivace služby:'|| Coalesce (Cast (cena_aktivace AS VARCHAR (30)),'?')||' | '
||'Poplatek za převod účastnictví: ' || Coalesce (Cast (cena_takeover AS VARCHAR (30)),'?')) AS spolecne_dohromady. Z toho mi vznikne sloupec:

spolecne_dohromady
Aktivace služby:.82 | Poplatek za převod účastnictví: ?
Aktivace služby:2.00 | Poplatek za převod účastnictví: .00
Aktivace služby:.82 | Poplatek za převod účastnictví: ?
Aktivace služby:.82 | Poplatek za převod účastnictví: ?
Aktivace služby:.82 | Poplatek za převod účastnictví: ?
Aktivace služby:.82 | Poplatek za převod účastnictví: ?
Aktivace služby:.00 | Poplatek za převod účastnictví: .00
Aktivace služby:.82 | Poplatek za převod účastnictví: ?

Potřebuji v tomto sloupci následující operaci a nevím, jak na to. Aby částka u Aktivace služeb, nebyla .82 (či jiná hodnota), ale aby byla 0,82/0,00 etc. protože, když mám hodnotu 2, tak to dobře uvede 2,00. Dále pokud v sloupci je následující "Aktivace služby: ,82 | Poplatek za převod účastnictví: ?, tak aby se v daném řádku objevilo pouze "Aktivace služby: ,82 (či jiná uvedená hodnota). Doufám, že jsem to popsala srozumitelně. Zkoušela jsem to přes CASE, ale nevím jak přesně zapsat a úplně to nefunguje.... Moc děkuji za případnou radu.

Zkusil jsem: Zkoušela jsem REPLACE a CASE

Chci docílit: Potřebuji v tomto sloupci následující operaci a nevím, jak na to. Aby částka u Aktivace služeb, nebyla .82 (či jiná hodnota), ale aby byla 0,82/0,00 etc. protože, když mám hodnotu 2, tak to dobře uvede 2,00. Dále pokud v sloupci je následující "Aktivace služby: ,82 | Poplatek za převod účastnictví: ?, tak aby se v daném řádku objevilo pouze "Aktivace služby: ,82 (či jiná uvedená hodnota).

 
Odpovědět
27.12.2022 12:01
Avatar
Odpovídá na Vlaďka Š
Matúš Olejník:27.12.2022 18:05

Ahoj, akú databázu používaš? SQL Server?

Nahoru Odpovědět
27.12.2022 18:05
/* I am not sure why this works but it fixes the problem */
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:27.12.2022 20:12

ja mam pocit, ze tohle spojovani string || string || string pouziva Oracle. ale muze to byt i ms sql.

 
Nahoru Odpovědět
27.12.2022 20:12
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:27.12.2022 20:29
-- jenom tvuj kod s pouzitim tlacitka editoru pro vlozeni kodu a trochu upraveny

       'Aktivace služby:' ||
       COALESCE( CAST( cena_aktivace AS VARCHAR(30)  ),   '?' ) ||
       ' | ' ||
       'Poplatek za převod účastnictví: ' ||
       COALESCE( CAST( cena_takeover AS VARCHAR(30)  ),   '?')
) AS spolecne_dohromady -- tady na tom radku je nejake uzavreni zavorky

A nemuzes si tam vypsat jeste k tomu jen ty 2 zminene sloupce? Treba je v nich neco, co tam nema vyt. Treba se nepodari prevod pres varchar nebo cast. Jinak, na netu pouzivaji 'char', ale, to asi nema vliv.

 
Nahoru Odpovědět
27.12.2022 20:29
Avatar
Vlaďka Š
Člen
Avatar
Vlaďka Š:28.12.2022 8:15

Ahoj, používám TERADATU.

 
Nahoru Odpovědět
28.12.2022 8:15
Avatar
Vlaďka Š
Člen
Avatar
Vlaďka Š:28.12.2022 8:16

Prostě cílem cvičení má být, že pokud v tomto sloupci je uvedena hodnota, tj. Aktivace služby :0,82 | Poplatek za převod účastnictví: ?. Tak by se v tom sloupci měla zobrazit pouze Aktivace služby:0,82 a pokud bude u obojího částka tak se musí zobrazit obojí. A to právě nevím, jak udělat.

 
Nahoru Odpovědět
28.12.2022 8:16
Avatar
Vlaďka Š
Člen
Avatar
Odpovídá na Peter Mlich
Vlaďka Š:28.12.2022 14:12

Ahoj,

už to zkouším postupně, ale myslela jsem, zda není nějaká funkce, etc :-)

 
Nahoru Odpovědět
28.12.2022 14:12
Avatar
Petan
Člen
Avatar
Petan:28.12.2022 19:20

Ahoj neznam TERADATU ,ale obecne by mel fiungova
druhy pozadavek

'Aktivace služby:' || Coalesce (Cast (cena_aktivace AS VARCHAR (30)),'?') ||
 ' | ' ||
Coalesce (||'Poplatek za převod účastnictví: ' || Cast (cena_takeover AS VARCHAR (30)),'')) AS spolecne_dohromady

a uprava v CASE je to takove podivne, mela by tam byt nejaka formatovaci funkce, ale mohlo by to fungovat

'Aktivace služby:' ||
case
        when cena_aktivace IS NULL THEN '?'
        when cena_aktivace < 1.0 then '0' || Cast (cena_aktivace AS VARCHAR (30))
        else Cast (cena_aktivace AS VARCHAR (30))
end ||
case
        when cena_takeover IS NULL then ''
        else ' | Poplatek za převod účastnictví: ' || Cast (cena_takeover AS VARCHAR (30))
end
        AS spolecne_dohromady
 
Nahoru Odpovědět
28.12.2022 19:20
Avatar
Vlaďka Š
Člen
Avatar
Vlaďka Š:30.12.2022 17:00

Ahoj, super. Moc děkuji za pomoc. Zkusím to. Ale takhle by to fungovat mělo. Díky moc.

 
Nahoru Odpovědět
30.12.2022 17:00
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.