求一语句。
表A有
name age
张三 20
李四 25
王五 0
赵六 0
-----
表B有
no age
1 25
2 26
3 27
------
比方我要得到一个结果,搜索表A数据,只要年龄为0的,就在表B中随机读取一个。
假如我这样写,select name, case when age='0' then (select top 1 age from B Order By NewID() else age end) from A 。这样每次的结果王五和赵六的值都一样,我需要的是每次王五和赵六都是独立的从表B读取一个值。
求解?
------解决方案--------------------select name, age from tba where age!=0
union all
select name,age from (select tba.name,tbb.age,row=row_number()over(partition by tba.[name] order by checksum(newid())) from tba,tbb where tba.age=0)t where row=1