MSSQL – Random i gropu by koristeći cross apply
Problem :
imamo 10 apartmana , za svaki apartman imamo po 5 slika… potrebno je selektirati po jednu random sliku za svaki od apartmana. S obzirom da group by traži agregatnu funkciju kod selekcije, korištenje Min(image_url) kod selecta će uvijek vraćati istu sliku, onu koja je Min.
Rješenje:
select MIN(A.id) AS slika_id, A.obj_id, dtbl.image_url from tbl_slike A cross apply (select TOP 1 image_url, obj_id from tbl_slike B WHERE B.obj_id = A.obj_id order by newid() ) dtbl group by A.obj_id, dtbl.image_url