Jakub Strojek

Jakub Strojek Specjalista ds.
wdrożeń

Temat: zapytanie sql oracle

Witam potrzebuje informacji jak zamienic wartosc zwracana z zapytania w formie liczb od 0 do 6 w tym wypadku chodzi o wartosc "war.wart_zn" jak zrobić żeby np. cyfra 0 było wyświetlane xxx a jako cyfra 1 yyy?

select w.dt_wykon, w.nazwa, war.wart_zn from wyk_elecz w, wykelecz_wartwyn war
where
war.idk_kl_wyn='ZZOBSMIEJW'
and w.NAZWA='Obserwacja wkłuć obwodowych'
and w.ID_ELECZ='WKO'
and war.NR_DANEJ=1
and war.T_WART='K'
and w.T_ELECZ='KAPZA'
and war.ID_WYK_ELECZ=w.ID_WYK_ELECZ
and w.STAN='W'
Pawel M.

Pawel M. oracle, middleware,
jboss, apache

Temat: zapytanie sql oracle

Jakub Strojek:
Witam potrzebuje informacji jak zamienic wartosc zwracana z zapytania w formie liczb od 0 do 6 w tym wypadku chodzi o wartosc "war.wart_zn" jak zrobić żeby np. cyfra 0 było wyświetlane xxx a jako cyfra 1 yyy?

select w.dt_wykon, w.nazwa, war.wart_zn from wyk_elecz w, wykelecz_wartwyn war
where
war.idk_kl_wyn='ZZOBSMIEJW'
and w.NAZWA='Obserwacja wkłuć obwodowych'
and w.ID_ELECZ='WKO'
and war.NR_DANEJ=1
and war.T_WART='K'
and w.T_ELECZ='KAPZA'
and war.ID_WYK_ELECZ=w.ID_WYK_ELECZ
and w.STAN='W'


Uzyj funkcji DECODE.Pawel M. edytował(a) ten post dnia 20.03.13 o godzinie 12:11

konto usunięte

Temat: zapytanie sql oracle

Lepiej byłoby zrobić słownik.
Wojciech Muszyński

Wojciech Muszyński Tworzenie aplikacji
bazodanowych
(Oracle, APEX,
Access)

Temat: zapytanie sql oracle

Są tutaj co najmniej 4 metody (z których 2 zostały już wymienione wcześniej).

1. DECODE

select w.dt_wykon,
w.nazwa,
decode (war.wart_zn,
0,'Wart.0',
1,'Wart.1',
2,'Wart.2',
....... ,
6,'wart.6',
'wartosc inna'
) wart_zn
from wyk_elecz w,
wykelecz_wartwyn war
where war.idk_kl_wyn='ZZOBSMIEJW'
and w.nazwa='Obserwacja wkłuć obwodowych'
and w.id_elecz='WKO'
and war.nr_danej=1
and war.t_wart='K'
and w.t_elecz='KAPZA'
and war.id_wyk_elecz=w.id_wyk_elecz
and w.stan='W'


2. SŁOWNIK:

select w.dt_wykon,
w.nazwa,
s.wartosc_opisowa
from wyk_elecz w,
wykelecz_wartwyn war,
slownik s
where war.idk_kl_wyn='ZZOBSMIEJW'
and w.nazwa='Obserwacja wkłuć obwodowych'
and w.id_elecz='WKO'
and war.nr_danej=1
and war.t_wart='K'
and w.t_elecz='KAPZA'
and war.id_wyk_elecz=w.id_wyk_elecz
and w.stan='W'
and w.wart_zn = s.wart_zn


3. CASE - działa jak decode, tylko z nieco inną składnią.
(Oracle zaleca stosowanie case - decode zostało w 11 w celu zapewnienia zgodności z niższymi wersjami i jest nie zalecane!!)

select w.dt_wykon,
w.nazwa,
case
when war.wart_zn = 0 then
'Wart.0'
when war.wart_zn = 1 then
'Wart.1'
when war.wart_zn = 2 then
'Wart.2'
..........
when war.wart_zn = 6 then
'Wart.6'
else
'Wart.inna'
end wart_zn
from wyk_elecz w,
wykelecz_wartwyn war
where war.idk_kl_wyn='ZZOBSMIEJW'
and w.nazwa='Obserwacja wkłuć obwodowych'
and w.id_elecz='WKO'
and war.nr_danej=1
and war.t_wart='K'
and w.t_elecz='KAPZA'
and war.id_wyk_elecz=w.id_wyk_elecz
and w.stan='W'


4. Rozszerzenie tablicy wykelecz_wartwyn. Mam mocne przeczucie, że jest to tabela słownikowa.
Tak mi się wydaje, na podstawie analizy zapytania. W taki przypadku wystarczy w tabeli dodać pole wart_opisowa i użyć tego pola w zapytaniu.


select w.dt_wykon,
w.nazwa,
war.wart_opisowa,
from wyk_elecz w,
wykelecz_wartwyn war
where war.idk_kl_wyn='ZZOBSMIEJW'
and w.nazwa='Obserwacja wkłuć obwodowych'
and w.id_elecz='WKO'
and war.nr_danej=1
and war.t_wart='K'
and w.t_elecz='KAPZA'
and war.id_wyk_elecz=w.id_wyk_elecz
and w.stan='W'
Wojciech Muszyński edytował(a) ten post dnia 20.03.13 o godzinie 20:52

konto usunięte

Temat: zapytanie sql oracle

Wojciech Muszyński:
Są tutaj co najmniej 4 metody (z których 2 zostały już wymienione wcześniej).

Moim zdaniem to jednak w dalszym ciągu te same dwie metody.

konto usunięte

Temat: zapytanie sql oracle

Wyżej masz idealne odpowiedzi potwierdzam
 
SELECT w.dt_wykon,
w.nazwa,
war.wart_zn,
CASE WHEN war.wart_zn = 0
THEN 'xxx'
WHEN war.wart_zn = 1
THEN 'yyy'
END
FROM wyk_elecz w,
wykelecz_wartwyn war
WHERE war.ID_WYK_ELECZ = w.ID_WYK_ELECZ
AND war.idk_kl_wyn='ZZOBSMIEJW'
AND w.NAZWA='Obserwacja wkłuć obwodowych'
AND w.ID_ELECZ='WKO'
AND w.T_ELECZ='KAPZA'
AND w.STAN='W'
AND war.NR_DANEJ=1
AND war.T_WART='K';



Wyślij zaproszenie do