当前位置: 代码迷 >> Sql Server >> 一段SQL的写法,求步骤
  详细解决方案

一段SQL的写法,求步骤

热度:12   发布时间:2016-04-24 18:53:57.0
一段SQL的写法,求方法!
select * from k11  有10條紀錄

files1  files2  files3  files4
AA        BB     CC       DD
ZZ        EE     TT       YY
NN        MM     GG       UU
.
.

另外一个表User 有99条记录,现在要随机在User这个表里面随机选3条记录
select top 3 NewID() as random,[UserId] from [User]
random          UserId
E81A4DBB  ming
F31B3B6C  ling
16574317  Ting

然后将User这个表上的UserId值结果平均分配到k11上面那个表上,最后結果顯示如下


files1  files2  files3  files4  UserId
AA        BB     CC       DD     ming
ZZ        EE     TT       YY     ling
NN        MM     GG       UU     Ting
.
.
.
.

求高手指点!!在线等~~
------解决方案--------------------
引用:
;with t
as
(
select [UserId],
       ROW_NUMBER() over(order by newid()) as rownum
from [User]
),
 
tt
as
(
select *,
       ROW_NUMBER() over(order by getdate()) as rownum
from k11
)
 
select tt.files1,tt.files2,tt.files3,tt.files4,t.UserId
from tt
left join t
        on tt.rownum = t.rownum

上面你给我的方法可以load出来,显示结果如下
files1  files2  files3  files4  UserId
A1        BB     CC       DD     ming
A2        EE     TT       YY     ling
A3        MM     GG       UU     Ting
A4        XX     XX       XX     null
A5        XX     XX       XX     null
A6        XX     XX       XX     null
A7        XX     XX       XX     null
A8        XX     XX       XX     null
A9        XX     XX       XX     null
A10       XX     XX       XX     null

剩下的7条记录都是null,没有分配到UserId进去,我想继续把剩下的7条记录也把那3个UserId填进去哦~~可以吗?


修改了一下,试试这个:

;with t
as
(
select [UserId],
       ROW_NUMBER() over(order by newid()) as rownum
from [User]
),

tt
as
(
select *,
       case when rownum1 %3 =0 then 3 else rownum1 %3 end as rownum
from 
(
select *,
   ROW_NUMBER() over(order by getdate()) as rownum1
from k11
)a
)

select tt.files1,tt.files2,tt.files3,tt.files4,t.UserId
from tt
left join t
        on tt.rownum = t.rownum
           and t.rownum <=3
  相关解决方案