举了一个简单的例子
如何随机从a02中抽取ID号对应的 num值的天数,将A200值改掉? 简单说就是在a02 表中L1 随机抽取3天  L2 随机抽取9天  L3随机抽取3天 L4随机抽取12天 ....该如何解决 求大神指导

解决方案 »

  1.   

    select a2.L1,a1.num,a201
    from a1,(select *,row_number() over(order by newid()) num from a2)a2
    where a1.num>=nu.num这样就行了,至于更新,接着写吧
      

  2.   

    大神啊,这个是不对的,你没有理解意思  两个表示有关联的 最后我要得出的查询结果是  L1有三个随机数据 L2有9个随机数据 L3 有三个随机数据....................
      

  3.   

    with t as (select ROW_NUMBER() over (order by newid()) num, * from a2 order by NEWID() )
     select * from t where exists(select 1 from a1 
       where id=a2.id and num>=t.num)
      

  4.   

    请问:
     1.在图片中找不到a02 表喔, 哪个是a02 表?
     2.将A200值改掉? 改为什么?请说明.
     3.先说"将A200值改掉", 后又说"要得出的查询结果是", 不明白到底是要查询还是更新? LZ希望的结果是怎样的,请列一下.
      

  5.   

    楼主是不是要这样的
    先创建临时表#a3
    select row_number() over(order by ID) NID,* into #a3 from a1declare @num int,@i int,@Ei int,@sql varchar(5000)
    set @num=0
    set @i=1
    set @Ei=(select count(*) from (select distinct ID from a2)a)
    set @sql=' '
    while(@i<=@Ei)
    begin
      set @num=(select num from a3 where NID=@i)
      if(@i<@Ei)
      set @sql=@sql+'select top '+Convert(char(2),@num)+' * from a2 where ID='''+(select ID from a3 where NID=@i)+''' union all '
      else
      set @sql=@sql+'select top '+Convert(char(2),@num)+' * from a2 where ID='''+(select ID from a3 where NID=@i)+''''
      
     set @i=@i+1
    endexec(@sql)
      

  6.   

     简单讲就是将 a2表中 L1随机抽取3天 L2随机抽取 9天 L3随机抽取 3天 以此类推  将a200的值都改为白班 就行了