Załóżmy, że mamy tabelę kejs:
create table kejs(
id serial primary key,
kod varchar(32),
nazw varchar(64)
);
insert into kejs (id, kod, nazw) VALUES ('1', '5.12.12234', 'COŚ');
insert into kejs (id, kod, nazw) VALUES ('2', '5.12.12343', 'KTOŚ');
insert into kejs (id, kod, nazw) VALUES ('3', '5.12.12222', 'PTYŚ');
insert into kejs (id, nazw) VALUES ('4', 'MIŚ');
i chcemy w zapytaniu połączyć dwie kolumny w jedną o szumnej nazwie "nazwa". Proste zapytanie:
SELECT
k.id,
k.kod || ' - ' || k.nazw as nazwa
FROM
kejs k
ORDER BY
k.kod,
k.nazw;
da nam rezultat:
id | nazwa
----+-------------------
3 | 5.12.12222 - PTYŚ
1 | 5.12.12234 - COŚ
2 | 5.12.12343 - KTOŚ
4 |
Widać, że ostatni wiersz jest pusty - ponieważ kod tego wiersza jest pusty łączenie dwóch tabel nie zadziałało. Z pomocą przychodzi nam tu właśnie CASE:
SELECT
k.id,
CASE
WHEN k.kod is not null THEN k.kod || ' - ' || k.nazw
WHEN k.kod is null THEN k.nazw
END as nazwa
FROM
kejs k
ORDER BY
k.kod,
k.nazw;
W rezultacie otrzymujemy:
id | nazwa
----+-------------------
3 | 5.12.12222 - PTYŚ
1 | 5.12.12234 - COŚ
2 | 5.12.12343 - KTOŚ
4 | MIŚ
Milutkie nie? :)
fajne, swoją drogą Miś w środę
OdpowiedzUsuńaaa...i wywal jedno "można" ;]
aaa - wywalilem ;]
OdpowiedzUsuńMiś w środe powiadasz... spróbuje obejrzeć w takim razie... :)
20:40 tvp2 ;)
OdpowiedzUsuń