[ Belgarion @ 17.09.2012. 11:19 ] @
imam tabelu

ime broj
-----------
mirko 1
slavko 2
janko 3


Treba mi select tako da selektuje ime gde je broj=2. Ali ako nema ime sa broj=2 onda neka selektuje bilo koje ime.

znaci nesto kao:

Code:

if (postoji broj=1 u tabeli blablaTable) then
   Select ime from blablaTable where broj =2
else
   Select top 1 ime from blablaTable


ali bilo bi zgodno da se ovo izvede bez if/else jer bi trebalo ovo "uglaviti" u gomilu inner joinova.
Da li postoji neki order by ali tako da na vrh stavim ono sto ja zelim pa da od toga uzmem top1?

Ili mozda neki drugi trik?
[ Dusan Kondic @ 17.09.2012. 12:06 ] @
Npr.
Code:
DECLARE @T TABLE(Ime NVARCHAR(20), Broj INT)

INSERT INTO @T(Ime, Broj) VALUES(N'Mirko', 1)
INSERT INTO @T(Ime, Broj) VALUES(N'Slavko', 2)
INSERT INTO @T(Ime, Broj) VALUES(N'Janko', 3)

SELECT ISNULL((SELECT t.Ime FROM @T t WHERE t.Broj = 2), (SELECT TOP 1 t1.Ime FROM @T t1))
[ vujkev @ 17.09.2012. 12:19 ] @
ili

Code (tsql):
declare @tbl table (ime nvarchar(50), broj int)

insert into @tbl select 'mirko', 1
insert into @tbl select 'slavko', 2
insert into @tbl select 'janko', 3

select top 1 * from @tbl
order by (case when broj = 2 then 1 else 0 end) desc
[ Belgarion @ 18.09.2012. 14:28 ] @
Radi! Hvala puno!
Pogotovo drugo resenje mi se svidja. Jako elegantno.