MSSQL – SELECT COALESCE

Problem: WHERE X = ako je dostupno A selektiraj A,  a ako nije selektiraj B ako je B dostupno, a ako nije ni B dostupno selektiraj C…


SELECT * FROM tbl_test WHERE  tbl_test.lang = (
COALESCE(
(SELECT TOP 1 lang FROM tbl_test2 WHERE  lang='mk' ),
(SELECT TOP 1 lang FROM tbl_test2 WHERE lang='en'),
'hr'
)

No što ako želimo selektirati ovako: ako je dostupno A selektiraj A,  a ako nije selektiraj B ako je B dostupno, a ako nije ni B dostupno selektiraj C ali ne u WHERE uvjetu nego u samom selectu:

SELECT
COALESCE(TBL1.partner_id,TBL2.partner_id) as partner_id,
COALESCE(TBL1.event_title,TBL2.event_title) as event_name,
COALESCE(TBL1.lang,TBL2.lang) as lang
FROM
(SELECT partner_id, lang, event_title FROM tbl_a WHERE tbl_a.lang = 'HR') AS TBL1
FULL OUTER JOIN
(SELECT tbl_a.partner_id,tbl_a.lang,tbl_a.event_title FROM tbl_a WHERE tbl_a.lang = 'EN') AS TBL2
ON TBL1.partner_id = TBL2.partner_id

Comments are closed.